问题
我正在运行 Ubuntu 18.04,并且最近安装了 MySQL。但我从未真正使用过它。据我记得,我从未为任何用户设置过密码。(如果我设置了,我知道它会是什么。)
今天安装了phpMyAdmin,发现无法通过phpMyAdmin以root身份登录,尝试不用密码直接通过终端登录MySQL:
mysql -u root
如果我忘记了,我会设置密码:
mysql -u root -p
但这两件事都回来了
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
尝试的解决方案
尝试 1
我尝试过这指南中,我停止了 MySQL 守护进程,然后使用该选项启动了 mysqld 守护进程--skip-grant-tables
。然后运行此命令即可无需密码登录:
mysql -u root
我没有得到提示,而是mysql>
遇到了以下错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)
第二次尝试
我尝试使用以下命令卸载 MySQL:
sudo apt-get --purge remove mysql-server mysql-common mysql-client
然后我尝试使用此命令重新安装 MySQL:
sudo apt-get install mysql-server mysql-common mysql-client
然后尝试设置如下密码:
mysqladmin -u root password my-new-password
然而我再次被错误信息难住了:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''
我的程序员同事们,我完全不知道在继续寻求获得 MySQL 的强大功能时该往哪里走......
编辑
使用后sudo
(按照 vidarlo 的回答),我能够访问我的数据库,并且我设法使用以下命令更改我的密码:
mysql> update user set authentication_string=password("Z4hVdwn9qZ")
where user='root';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1
但 phpMyAdmin 仍然无法登录并返回错误
#1698 - Access denied for user 'root'@'localhost'
答案1
尝试
sudo mysql -u root
MariaDB 使用 Unix 套接字身份验证,这意味着您作为启动 mysql 客户端的用户进行身份验证。
您可以在以下位置阅读更多内容 MariaDB 的文档。