解决MySql ERROR 1698

解决MySql ERROR 1698 错误:Access denied for user 'root'@'localhost'

一 问题描述

在Ubuntu服务器上安装MySql 数据库,数据库安装见前面的博客。
但是在登陆的时候遇到了问题:

~$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user'root'@'localhost'

即这个1698问题!

但是以下面两个命令登陆都没有问题:

sudo mysql -uroot -p
sudo mysql

上面所说的问题在很多场合都会出现,比如在django中启动数据库时,当指定用户和密码时,它的内部启动方式就是:

mysql -u用户 -p密码。

所以也会出现1698:Access denied for user’root’@'localhost’的错误

注:在windows环境下,启动数据库后用上述命令登陆不会出现问题。

二 解决措施

1)先用其他命令登陆,查看一下user表,错误的起因就是在这里, root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password。

    mysql> select user, plugin from mysql.user;
    +-----------+-----------------------+
    | user      | plugin                |
    +-----------+-----------------------+
    | root      | auth_socket           |
    | mysql.sys | mysql_native_password |
    | dev       | mysql_native_password |
    +-----------+-----------------------+
    3 rows in set (0.01 sec)

注:可以进入数据库后直接直接执行上述命令,也可以这样:

mysql> use mysql;

后执行:

mysql> select user, plugin from user;

2)关于auth_socket,在官方有说明,反正现在暂时不用它, 那就把这里改了。

mysql> update mysql.user set authentication_string=PASSWORD('密码'), plugin='mysql_native_password' where user='root';

Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1
     
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3)重启服务,问题就解决了,可以用下述命令登陆了:

mysql -uroot -p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值