TL; DR:以root用户身份访问新版本的mysql / mariadb之后,在新安装后,您需要位于root用户的shell中(即sudo mysql -u root
,或mysql -u root
位于由su -
或sudo -i
首先启动的shell中)。
在Ubuntu上完成相同的升级后,我遇到了相同的问题。
奇怪的是
sudo /usr/bin/mysql_secure_installation
会接受我的密码,并允许我设置它,但是我无法root
通过mysql
客户端登录
我必须从开始mariadb
sudo mysqld_safe --skip-grant-tables
以root身份访问,而其他所有用户仍然可以正常访问。
查看mysql.user
我注意到的根表,该plugin
列设置为,unix_socket
而所有其他用户的列设置为“ mysql_native_password”。快速浏览此页面:https : //mariadb.com/kb/zh-CN/mariadb/unix_socket-authentication-plugin/解释了Unix Socket通过将uid
运行客户端的进程与客户端中用户的进程进行匹配来启用登录。mysql.user
表。换句话说,root
必须以root用户身份登录才能访问mariadb 。
确保通过身份验证重新启动我的mariadb守护程序,我可以使用root身份登录
sudo mysql -u root -p
要么
sudo su -
mysql -u root -p
完成此操作后,我考虑了如何在无需执行sudo的情况下进行访问,这只是运行这些mysql查询的问题
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(替换<password>
为所需的mysql根密码)。为root用户启用了密码登录。
或者运行mysql查询:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
将更改root帐户以使用密码登录而不更改密码,但这可能会导致您安装了没有root密码的mysql / mariadb。
这些之后,您需要重新启动mysql / mariadb:
sudo service mysql restart
瞧,我可以通过我的个人帐户访问 mysql -u root -p
请注意这样做是在降低安全性大概由于充分的理由,MariaDB开发人员选择了像这样的root访问工作。
考虑到这一点,我感到非常高兴,sudo mysql -u root -p
因此我又切换回了这一点,但是我认为我会发布解决方案,因为我找不到其他解决方案。