Mysql系列之创建用户、删除用户、修改密码

文章目录

  • 1. 登录mysql
    • 1.1 远程登录mysql
  • 2. 创建用户
    • 2.1 创建本地用户
    • 2.2 创建外网可访问用户
    • 2.3 刷新授权
  • 3. 修改用户密码
    • 3.1 修改本地用户密码
    • 3.2 修改外网用户密码
    • 3.3 刷新授权
    • 3.4 特殊情况,忘记root用户密码
      • 3.4.1 修改配置文件,跳过密码验证
      • 3.4.2 登录root用户
      • 3.4.3 修改密码
      • 3.4.4 刷新授权
      • 3.4.5 重启mysql服务
  • 4. 操作用户权限
    • 4.1 查看权限
    • 4.2 修改权限
    • 4.3 删除权限
  • 5. 修改用户
  • 6. 删除用户
  • 7. 参考文献

强烈推荐这篇博文 MySQL添加新用户、为用户创建数据库、为新用户分配权限

1. 登录mysql

正常情况下,root用户才有权限进行用户创建(可以为创建的用户赋予跟root一样的权限),所以我们先登录root用户。
mysql的用户名是root,密码是123456

mysql -u root -p123456
# or
mysql -u root -p
Enter password:

1.1 远程登录mysql

mysql -u test -h 113.186.203.114 -p 123456

2. 创建用户

创建用户这一步是关键。首先,我们需要知道的是访问mysql有两种方式

  • 本地IP访问。例如,在113.219.186.18这个机器上安装了好了mysql,而且服务已经开启,然后你在这台机器上要访问mysql,这就是本地IP访问。
  • 外网IP访问。例如,在113.219.186.181这个机器上安装好了mysql,而且服务已经开启,然后你在103.219.186.181这个机器上来远程访问113.219.186.181上的mysql,这就是外网IP访问。

2.1 创建本地用户

创建一个用户名为admin,密码为123456的本地用户。
方式一

mysql> create user 'admin'@'localhost' identified by '123456';

方式二
使用grant来可以给用户赋予指定的权限,当这个用户和host的组合不存在时,则会新建。
关于grant的使用详解请移步这篇博客 mysql grant 用户权限总结

# 格式
mysql> grant [权限1,权限2...] on 某库.某表 to 新用户名@'主机名/IP地址' identified by '密码';
# 例子:增加一个用户为admin,密码为123456,本地用户可访问。
# 使admin用户获得所有数据库中所有表的(*.*)select、insert、update、delete权限
mysql> grant select,insert,update,delete on *.* to 'admin'@'localhost' identified by '123456';
# 使admin用户获得所有权限。
mysql> grant all privileges on *.* to 'admin'@'localhost' identified by '123456';

# 如果只想让该用户访问某一个库,只需要将上面的*.*改成 数据库名.*。例如,只让admin用户访问csdn这个数据库下的所有表,当然也可以指定某个表,自己试试吧。
mysql> grant all privileges on csdn.* to 'admin'@'localhost' identified by '123456';

2.2 创建外网可访问用户

创建一个用户名为admin,密码为123456的外网可访问用户。
方式一

mysql> create user 'admin'@'%' identified by '123456';

方式二

# 例子:增加一个用户为admin,密码为123456,让所有外网IP都能访问。
# 使admin用户获得所有数据库中所有表的(*.*)select、insert、update、delete权限
mysql> grant select,insert,update,delete on *.* to 'admin'@'%' identified by '123456';
# 使admin用户获得所有权限。
mysql> grant all privileges on *.* to 'admin'@'%' identified by '123456';

# 如果只想让该用户访问某一个库,只需要将上面的*.*改成 数据库名.*。例如,只让admin用户访问csdn这个数据库下的所有表,当然也可以指定某个表,自己试试吧。
mysql> grant all privileges on csdn.* to 'admin'@'%' identified by '123456';

2.3 刷新授权

记得刷新授权才会生效。

mysql> flush privileges;

值得一提的是,本地访问需要用本地用户,外网访问需要用外网用户。

3. 修改用户密码

3.1 修改本地用户密码

下面代码都是修改的本地admin用户的密码。

mysql> set password for 'admin'@'localhost'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='admin' and host='localhost';
# 或者
mysql> use mysql; 
mysql> update user set password=password('123') where user='admin' and host='%'; 

3.2 修改外网用户密码

mysql> set password for 'admin'@'%'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='admin' and host='%';
# 或者
mysql> use mysql; 
mysql> update user set password=password('123') where user='admin' and host='%'; 

3.3 刷新授权

上面只是修改了密码,但是还没有生效。所以需要刷新授权。

mysql> flush privileges;

3.4 特殊情况,忘记root用户密码

3.4.1 修改配置文件,跳过密码验证

vim /etc/my.cnf 
# 在文件末尾添加skip-grant-tables,表示跳过密码验证。

3.4.2 登录root用户

mysql -u root -p
Enter password:
# 直接回车就能进入mysql数据库了

3.4.3 修改密码

下面代码都是修改的本地admin用户的密码。

mysql> set password for 'root'@'localhost'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='root' and host='localhost';
# 或者
mysql> use mysql; 
mysql> update user set password=password('111111') where user='root' and host='localhost'; 

修改外网用户密码

mysql> set password for 'root'@'%'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='root' and host='%';
# 或者
mysql> use mysql; 
mysql> update user set password=password('123') where user='root' and host='%'; 

3.4.4 刷新授权

mysql> flush privileges;

3.4.5 重启mysql服务

先将配置文件 /etc/my.cnf 中新加的配置注释掉

vim /etc/my.cnf 
......
# skip-grant-tables

重启mysql服务

service mysqld start
# 或者
service mysqld restart

4. 操作用户权限

4.1 查看权限

show grants for '用户'@'IP地址';

# 例子1
mysql> show grants for 'admin'@'localhost'; 

# 例子2
mysql> show grants for 'admin'@'%'; 

# 其实不加引号也可以
mysql> show grants for admin@localhost; 
mysql> show grants for admin@%;

4.2 修改权限

mysql> grant  权限 on 数据库.表 to '用户'@'IP地址';
# 例子1
# 授予用户通过外网IP操作testdb数据库中所有表的全部权限
mysql> grant all privileges on testdb.* to 'test'@'%' identified by '123456';

# 例子2
# 授予用户在本地操作testdb数据库中所有表的全部权限
mysql> grant all privileges on testdb.* to 'test'@'localhost' identified by '123456';
# 

记得刷新权限

mysql> flush privileges;

4.3 删除权限

# 格式
mysql> revoke 权限 on 数据库.from '用户'@'IP地址';
# 例子,删除amdin用户在本地访问mysql时的insert和update权限
mysql> revoke insert, update on csdn.* from 'admin'@'localhost';

记得刷新权限

mysql> flush privileges;

5. 修改用户

mysql> rename user 'admin'@'localhost' to 'new_admin'@'%';

# 刷新授权
mysql> flush privileges;

6. 删除用户

# 删除本地用户
mysql> drop user 'admin'@'localhost';
# 删除外网用户
mysql> drop user 'admin'@'%';

# 刷新授权
mysql> flush privileges;

或者

# 删除本地用户
mysql> delete from user Where User='admin' and Host='localhost';
# 删除外网用户
mysql> delete from user Where User='admin' and Host='%';

7. 参考文献

[1] MySQL添加新用户、为用户创建数据库、为新用户分配权限
[2] mysql修改用户密码的方法及命令
[3] 在MySQL登录时出现Access denied for user ‘root’@‘localhost’ (using password: YES) 拒绝访问,并可修改MySQL密码
[4] 创建mysql新用户,并且赋予权限管理。
[5] MySQL中用户权限、库权限、表权限的控制
[6] mysql添加用户、修改权限,修改登录权限ip
[7] mysql grant 用户权限总结

你可能感兴趣的:(数据库,mysql,linux)