1.连接mysql

1.连接mysql

我正在使用 Ubuntu 桌面 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,适用于 Linux (x86_64),使用 EditLine 包装器

答案1

MySQL 5.7 改变了安全模型:现在 MySQLroot登录需要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 正在连接到本地主机,那么这就足够了。

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>'

答案2

如果 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/

答案3

当我将 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

现在如果你尝试localhost/phpmyadmin使用以下方式连接到 phpmyadmin()

username: root
password: pass

您将能够创建数据库。

答案4

为了完整起见,我找到了使用 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;

问候

相关内容