我在运行时为 Mariadb 设置了一个密码,sudo mysql_secure_installation
但是当我尝试运行 mariadb 时mysql -u root -p
出现以下错误。
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
我在 AWS 的 Lightsail VPS 上使用 Ubuntu 18.04。我正在使用 Mariadb 版本10.1.44-MariaDB-0ubuntu0.18.04.1
。
MariaDB [mysql]> SELECT user,plugin,host FROM mysql.user;
+---------------+-------------+-----------+
| user | plugin | host |
+---------------+-------------+-----------+
| root | unix_socket | localhost |
| wordpressuser | | localhost |
+---------------+-------------+-----------+
其次,我不清楚设置和使用 Mariadb 的正确方法是什么。
- 当它要求我输入密码时我应该设置密码吗
mysql_secure_installation
? - 应该使用
sudo mysql
或来访问 mysql 吗mysql -u root -p
?
我可以按照说明设置密码期刊发展但我想知道正确的方法是什么。
$ mysql -u root -p
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user SET PASSWORD=PASSWORD("Passw0rd!") WHERE USER='root';
答案1
请阅读此处,它应该可以回答您的所有问题: 身份验证插件 - Unix Socket
基本上,默认情况下,root mysql 帐户使用unix_socket
插件进行保护,以便只有 root Ubuntu 用户才能登录到 root 数据库用户。因此sudo mysql -u root mysql
应该可以工作,但mysql -u root mysql
非 root 用户则不行。
如果你真的需要的话,可以改变这种行为并使用密码验证(参见链接文章),但是你可能会使您的数据库变得不那么安全。这实际上取决于您的用例和需求。