当前位置: 首页>>技术教程>>正文


无法以 root 身份输入 phpmyadmin (MySQL 5.7)

,

问题描述

我正在使用 Ubuntu 桌面 16.04(从 15.10 升级)。

我已经从 apt-get install phpmyadmin 安装了 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,适用于使用 EditLine 包装器的 Linux (x86_64)

最佳方法

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 required
dbc_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-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

好的,现在,如果您按照 Rael 的说明进行操作,您将能够登录 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

您将能够创建数据库。

第四种方法

在 Ubuntu 16.04 for 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 mysql
use mysql;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

问候

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12728.html,未经允许,请勿转载。