环境: Deepin15.7桌面版
在上次升级完系统之后的出现的问题,登录MySQL数据库的时候出现以下报错提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysql.sock' (2)
,用ps aux|grep mysql
命令查看,进程也并没有开启。
在网上查了一些资料,通过mysql --help
查看配置文件的位置,发现 sudo gedit /etc/my.cnf
和sudo gedit ~/.my.cnf
都是空的文件,而sudo gedit /etc/mysql/my.cnf
中也缺配置数据(各种端口、启动信息都没有)。
so
还是重装吧!
sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-server mysql-client
搞定。
然后……登录试试
首次登陆mysql -u root
,还没有密码。
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
emmm 好吧。
但查看进程已经开启了
试试sudo mysql -u root
,成功登录。
下面来设置以下root的密码:
mysql> set password for root@localhost = password('新密码');
OK~
下次便可以使用sudo mysql -u root -p
来进行登录,需要输入登录密码。
然而还是觉得有sudo 很是麻烦……emmm
查了一下:
先用sudo 登录进去,
用命令select user, plugin from mysql.user;
查看一下usr表
错误的起因就是在这里, root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password。
我们来修改一下类型:
mysql> update mysql.user set authentication_string=PASSWORD('咳咳 保密'), plugin='mysql_native_password' where user='root';
Query OK, 4 rows affected, 1 warning (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 1
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
我们退出再重新登录试试:
搞定!