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

Я использую 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 Distrib 5.7.12, for Linux (x86_64) using EditLine wrapper

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

Т.е. phpMyAdmin будет нет способный использовать root полномочия.

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

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

sudo mysql --user=root mysql

2. Создайте реальный пароль

В приведенных ниже шагах я буду использовать <please_replace_this> в качестве образца пароля. ПОЖАЛУЙСТА, ЗАМЕНИТЕ ЕГО СВОИМ ПАРОЛЕМ! НЕ ИСПОЛЬЗУЙТЕ <please_replace_this> В КАЧЕСТВЕ ПАРОЛЯ!

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

Выполните следующие команды (замена <please_replace_this> по желаемому паролю):

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

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

4. Необязательно и небезопасно: разрешить удаленные подключения.

Помнить: разрешить удаленному пользователю иметь все привилегии - это проблема безопасности, и это нет требуется в большинстве случаев.

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

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

5. Обновите phpMyAdmin

С помощью sudo, редактировать /etc/dbconfig-common/phpmyadmin.conf файл, обновляющий значения пользователя/пароля в следующих разделах (замена <please_replace_this> по паролю, использованному на шаге #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 requireddbc_dbpass='<please_replace_this>'

Если phpymadmin не может подключиться, это может быть связано с тем, что механизм аутентификации установлен на auth_socket. Вы можете изменить его, чтобы использовать обычный пароль, подобный этому:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password';

Я только что боролся с этим при чистой установке Ubuntu 18.04, и это то, что заставило его работать. Здесь есть приличная статья, объясняющая больше:

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

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

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

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

sudo apt-get -y install mariadb-server mariadb-clientsudo 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.5sudo rm -rf /etc/mysql /var/lib/mysqlsudo apt-get autoremovesudo 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.confsudo a2enconf phpmyadmin.confsudo 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/IPHost name of the MySQL database server for phpmyadmin: localhostPort number for the MySQL service: 3306MySQL database name for phpmyadmin: phpmyadmin<Ok>MySQL username for phpmyadmin: rootMySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANTPassword confirmation: passName of the database's administrative user: rootWeb server to reconfigure automatically: apache2An error occurred while installing the database: ignore

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

username: rootpassword: pass

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

В Ubuntu 16.04 для Mysql 5.7 проверьте приведенную ниже информацию в таблице и выполните необходимые настройки:

mysql>  SELECT User, Host, plugin FROM mysql.user;+------------------+-----------+-----------------------+| User             | Host      | plugin                |+------------------+-----------+-----------------------+| root             | localhost | auth_socket           || mysql.session    | localhost | mysql_native_password || mysql.sys        | localhost | mysql_native_password || debian-sys-maint | localhost | mysql_native_password || phpmyadmin       | localhost | mysql_native_password || root             | %         | mysql_native_password |+------------------+-----------+-----------------------+

Проверьте, есть ли у root плагин auth_socket, затем выполните приведенную ниже команду:

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';mysql> FLUSH PRIVILEGES;mysql> exit;

Для полноты картины я нашел решение своей проблемы в использовании MariaDB версии 10.1.23. Синтаксис, используемый для настройки нового пользователя, аналогичен тому, о котором сообщалось в сообщении выше от @ Rael Gugelmin Cunha, я помещаю здесь свое решение для ссылки на других, сталкивающихся с такой же проблемой:

root@raspberrypi:# sudo mysql --user=root mysqluse mysql;CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;

С уважением

У меня была такая же проблема, я следовал большинству советов, и ни один из них не сработал для меня! Моя проблема была такой же, когда я открыл http://localhost/phpmyadmin в моем браузере он запросил данные для входа в систему.

Я использовал корень как пользователь, и пароль, который я знал, был правильным. И я получал

#1698 - Доступ запрещен для пользователя 'root'@'localhost'

Все, что для этого требовалось, - это использовать phpmyadmin как пользователь, а не root, с известным паролем, и он впустил меня.

Только приведенный ниже код работает для ubuntu 18.04, php 7 выше и mysql 5.7

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

Не заменяйте 'phpmyadmin'. Создание любого другого пользователя не имеет полных привилегий, таких как создание нового пользователя, присвоение привилегий базы данных этому пользователю таким образом. Только пользователь phpmyadmin получит полный доступ.

Имея в виду Раэля Кунью:

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

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

# mysql -u rootuse mysql;CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;

и оставить настройку phpadmin (4) как есть.

После этого войдите в phpmyadmin со своими учетными данными

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

если вы устанавливаете MySQL отдельно, остановите его с помощью этой команды ниже sudo /opt/lampp/lampp stop service mysql stop sudo /opt/lampp/lampp start

Какая версия MySQL?

Вопрос обновлен

**ПРОСТОЙ СПОСОБ *** поиск * логин и * путь * в /etc/mysql/debian.cnf – Ubuntu 16.04

Попробуйте использовать это: Удалить пользователя root > Добавить пользователя root > Предоставить все привилегии пользователю root.