300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > MySQL—修改数据库root用户密码

MySQL—修改数据库root用户密码

时间:2024-05-17 05:08:18

相关推荐

MySQL—修改数据库root用户密码

三种方式

linux命令行执行mysqladmin客户端程序mysql命令行set password命令mysql命令行update命令 (推荐使用,避免多用户问题)

方式一:mysqladmin方式

格式

$ mysqladmin -uuser_name -p'oldPasswd' password 'newPasswd'

其中user_name即为用户名,oldPasswd即为旧密码,newPasswd即为新密码;

示例

$ mysqladmin -uroot -p'1qaz!QAZ' password 123456

方式二:set password方式

需要先通过mysql -uroot -p进入mysql命令行

格式

mysql> set password for user_name@localhost=password('newPasswd');Query OK, 0 rows affected (0.94 sec)

其中user_name即为用户名,newPasswd即为新密码;

示例

mysql> set password for root@localhost = password('1qw2!QW@');

方式三:update命令

需要先通过mysql -uroot -p进入mysql命令行

格式

mysql> update mysql.user set password=password('newPasswd') where user='userName';mysql> flush privileges;

其中user_name即为用户名,newPasswd即为新密码;

示例

mysql> update mysql.user set password=password('1qaz!QAZ') where user='root';Query OK, 0 rows affected (0.94 sec)mysql> flush privileges;Query OK, 0 rows affected (0.94 sec)

Q & A

问题:修改密码后服务端生效,但是navicat还能使用旧密码连接mysql?

其实mysql数据库中,我们所说的用户不仅仅只是'root',更多的是指root@localhostroot@%这种带有'userName'@'hostName'的才是具体的用户。

1)当我们使用:

mysql> set password for root@localhost=password('newPasswd');`

可能只是改了root@localhost这个用户,有可能还有root@%用户。

2)查看user表:

mysql> select host, user, password from mysql.user where user='root';

从user表中,我们可以看到root对应到多个host,使用之前的set语句可能我们只是更改了其中一个用户,我们可以通过update命令更新mysql.user表,全局更新所有root@hostName的密码;

3)所以,我们应该使用:

mysql> update mysql.user set password=password('newPasswd') where user='root';Query OK, 1 row affected (0.11 sec)Rows matched: 5 Changed: 1 Warnings: 0mysql> flush privileges;Query OK, 0 rows affected (0.94 sec)

这样可以全局改变所有带有root@的用户密码,再通过navicat使用旧密码连接数据库时,远程访问拒绝。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。