0
点赞
收藏
分享

微信扫一扫

mysql连接

冬冬_79d4 2023-11-11 阅读 32

1. 场景:

新的ubuntu18.04,没有设置密码的环节.

①. ssh连接时,提示ERROR 1698(28000): Access denied for user 'root'@'localhost'.
②. 因为需要设置密码才能密码,默认是空密码.

2. 分析:

use mysql;
select * from mysql.user where user = 'root'\G
...
max_user_connections: 0
plugin: auth_socket
authentication_string:                          // 这里是为空,表示没有设置密码
password_expired: N
password_last_changed: 2020-08-12 16:57:45
password_lifetime: NULL
...

注:
①. 修改密码后的样子:
    plugin: mysql_native_password               // 改变了
    authentication_string: *3C8252DE09D5ACD3977B5D239E7A5EA063409AC3

3. mysql8以下:

// ①. 找到安装时默认生成的默认账户
cat /etc/mysql/debian.cnf
mysql -u debian-sys-maint -p     // 密码是上一条命令中的password = xxx,是随机生成的,不要尝试修改这个密码.

// ②. 修改密码
use mysql;
update mysql.user set authentication_string=password('root') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;

// ③. 重启mysql
sudo service mysql restart
mysql -u root -p

4. mysql8以上:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld] 这一块中加入skip-grant-tables这句话。
sudo service mysql restart 重启mysql 服务
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
quit
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf将刚才的插入的内容删去
/etc/init.d/mysql restart


举报

相关推荐

0 条评论