Не удается ввести phpmyadmin как root (MySQL 5.7)

19

Я использую Ubuntu desktop 16.04 (обновлено с 15.10).

Я установил phpmyadmin из apt-get install phpmyadmin . Он работает, если я перехожу на localhost/phpmyadmin , но я не могу войти в него как root.

Я много искал для него. Я нашел много источников, в которых они предлагают изменить /etc/phpmyadmin/config.inc.php и заменить пользователя и пароль «root» и «» (пустым для пароля). Но мой config.inc.php отличается от своего. Например, в моем файле нет строки для пользователя и пароля, и кажется, что она автоматически получает ее из другого файла, который равен /etc/phpmyadmin/config-db.php . Несмотря на это, я изменил имя пользователя и пароль в этом файле, но теперь я получаю эту ошибку:

#1698 - Access denied for user 'root'@'localhost'

Что я должен делать?

Phpmyadmin Версия: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Распространение 5.7.12 для Linux (x86_64) с помощью обложек EditLine

    
задан Mostafa Ahangarha 26.04.2016 в 20:52
источник

3 ответа

54

MySQL 5.7 изменил безопасную модель: теперь для MySQL root для входа требуется sudo (в то время как пароль по-прежнему может быть пустым).

I.e., phpMyAdmin будет не способен использовать учетные данные root .

Простейшим (и самым безопасным) решением будет создание нового пользователя и предоставление необходимых привилегий.

1. Подключиться к mysql

sudo mysql --user=root mysql

2. Создайте пользователя для phpMyAdmin

Выполните следующие команды (заменив some_pass на требуемый пароль):

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Если ваш phpMyAdmin подключается к localhost, этого должно быть достаточно.

3. Дополнительно: разрешить удаленные соединения

Запомнить : разрешить удаленному пользователю иметь все привилегии в безопасности.

С учетом этого, если вы хотите, чтобы этот пользователь имел те же привилегии во время удаленных подключений, выполните дополнительно (заменив some_pass на пароль, используемый на шаге 2):

CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. Обновить phpMyAdmin

Используя sudo , отредактируйте файл /etc/dbconfig-common/phpmyadmin.conf , обновляющий значения пользователя / пароля в следующих разделах (заменив some_pass на пароль, используемый в шаге 2):

# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'
    
ответ дан Rael Gugelmin Cunha 26.04.2016 в 21:35
источник
6

Я столкнулся с той же проблемой при использовании mariaDB с phpmyadmin (Ubuntu 16.04LTS).

Предпосылки:

1) Установите MariaDB

sudo apt-get -y install mariadb-server mariadb-client
sudo mysql_secure_installation (answer to some interactive questions):
    Enter current password for root (enter for none): <enter>
    Set root password: n
    Remove anonymous users: n
    Disallow root login remotely: n
    Remove test database and access to it: n
    Reload privilege tables now: Y

Если вы хотите удалить mariaDB :

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

2) Установите phpmyadmin

sudo apt-get -y install phpmyadmin (and answer some interactive questions)
    Configuring phpmyadmin:
        Web server to reconfigure automatically: apache2
        Configure database for phpmyadmin with dbconfig-common: Yes
        MySQL application password for phpmyadmin: <blank>

3) В apache2 создайте символическую ссылку на phpmyadmin

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo service apache2 restart

Хорошо, теперь, если вы будете следовать инструкциям Раэля, вы сможете войти в phpmyadmin , но, по крайней мере, для меня, я не смог создать новые базы данных, поскольку появилось красное сообщение: No privileges (или какое-то подобное сообщение)

Исправление было путем перенастройки phpmyadmin и ответа на некоторые интерактивные вопросы.

sudo dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: TCP/IP
Host name of the MySQL database server for phpmyadmin: localhost
Port number for the MySQL service: 3306
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root
MySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANT
Password confirmation: pass
Name of the database's administrative user: root
Web server to reconfigure automatically: apache2
An error occurred while installing the database: ignore

Теперь, если вы попытаетесь подключиться к phpmyadmin ( localhost/phpmyadmin ), используя

username: root
password: pass

вы сможете создавать базы данных.

    
ответ дан Dan Costinel 19.03.2017 в 19:36
0

Ссылаясь на Раэля Кунья:

Да, его решение работает, и я пробовал других. Однако, ссылаясь на пользователя, имеющего открытый пароль в файле конфигурации, например, /etc/dbconfig-common/phpmyadmin.conf, выглядит как недостаток безопасности для общесистемного действия.

Поэтому я предпочел бы предположить, в чем заключается MariaDB 10.1.x (some_user и some_pass будут все, что вы можете придумать):

mysql -u root

использовать mysql;
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'some_user' @ '%' ИДЕНТИФИЦИРОВАНО 'some_pass'; ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА *. * TO 'some_user' @ '%' с опцией GRANT;
ПРИВИЛЕГИИ ФЛЮЗА,

и оставить phpadmin setup (4) как есть.

Войдите в phpmyadmin со своими учетными данными позже

В моих собственных настройках я заменяю вышеуказанный «%» на «localhost» для целей безопасности, но если на вашем сервере закрыт порт 3306, который не обязательно будет представлять угрозу безопасности для вас.

    
ответ дан Antonio J. de Oliveira 07.02.2018 в 14:28