一、用户创建
1.创建本地用户
方法一:
创建一个用户名为localuser,密码设置为localuser123的本地用户。
1 2
| create user 'localuser'@'localhost' identified by 'localuser123'; 1
|
方法二:
使用grant来可以给用户赋予指定的权限,当这个用户和host的组合不存在时,则会新建。
1 2 3 4 5 6 7 8 9
| grant [权限1,权限2...] on 库名.表名 to 用户名@'主机名/IP地址' identified by '密码'; #例子:增加一个用户为localuser,密码为localuser123,本地用户可访问。 #使localuser用户获得所有数据库中所有表的(*.*)select、insert、update、delete权限 grant select,insert,update,delete on *.* to 'localuser'@'localhost' identified by 'localuser123'; #使localuser用户获得所有权限。 grant all privileges on *.* to 'localuser'@'localhost' identified by 'localuser123'; #如果只想让该用户访问某一个库,只需要将上面的*.*改成 数据库名.*。 grant all privileges on csdn.* to 'localuser'@'localhost' identified by 'localuser123'; 12345678
|
2.创建外网访问用户
方法一:
创建一个用户名为networkuser,密码设置为networkuser123的本地用户。
1 2
| create user 'networkuser'@'%' identified by 'networkuser123'; 1
|
方法二:
1 2 3 4 5 6 7
| #例子:增加一个用户为networkuser,密码为networkuser123,让所有外网IP都能访问。 #使networkuser用户获得所有数据库中所有表的(*.*)select、insert、update、delete权限 grant select,insert,update,delete on *.* to 'networkuser'@'%' identified by 'networkuser123'; #使networkuser用户获得所有权限。 grant all privileges on *.* to 'networkuser'@'%' identified by 'networkuser123'; #如果只想让该用户访问某一个库,只需要将上面的*.*改成 数据库名.*。 grant all privileges on csdn.* to 'networkuser'@'%' identified by 'networkuser123';
|
3.刷新权限
创建用户后需要进行刷新
二、修改用户密码
1.修改本地用户密码
格式:
1
| UPDATE user SET password=PASSWORD('新密码') WHERE user='用户';
|
1 2 3 4 5 6
| set password for 'localuser'@'localhost'=password('localuser456'); #或者 UPDATE mysql.user SET Password=PASSWORD('localuser456') WHERE User='localuser' and host='localhost'; #或者 use mysql; update user set password=password('localuser456') where user='localuser' and host='%';
|
2.修改外网用户密码
1 2 3 4 5 6
| set password for 'networkuser'@'%'=password('networkuser456'); #或者 UPDATE mysql.user SET Password=PASSWORD('networkuser456') WHERE User='networkuser' and host='%'; #或者 use mysql; update user set password=password('networkuser456') where user='networkuser' and host='%';
|
3.刷新权限
密码修改之后没有生效,需要刷新权限
1.查看用户权限
1 2 3 4 5 6 7
| show grants for '用户'@'IP地址';
#查看本地用户权限 show grants for 'localuser'@'localhost';
#查看外网用户权限 show grants for 'networkuser'@'%';
|
2.修改用户权限
修改用户权限及密码格式:
1
| grant 权限 on 库名.表名 to '用户名'@’网段‘ identified by "该用户的密码";
|
1 2 3 4 5 6 7 8 9
| grant 权限 on 数据库名.表名 to '用户'@'IP地址';
#例子1 #授予用户通过外网IP操作testdata数据库中所有表的全部权限 grant all privileges on testdata.* to 'localuser'@'%' identified by 'localuser456';
#例子2 #授予用户在本地操作testdata数据库中所有表的全部权限 grant all privileges on testdata.* to 'networkuser'@'localhost' identified by 'networkuser456';
|
3.删除权限
1 2 3 4 5 6 7
| revoke 权限 on 数据库名.表名 from '用户'@'IP地址';
#删除localuser用户在本地访问mysql时的insert和update权限 revoke insert, update on testdata.* from 'localuser'@'localhost';
#删除localuser用户在外网访问mysql时的insert和update权限 revoke insert, update on testdata.* from 'networkuser'@'%';
|
4.刷新权限
修改用户权限和删除用户权限都需要进行刷新
四、修改用户
1.修改用户名
1 2
| rename user '原始用户名'@'localhost' to '新用户名'@'%'; rename user 'networkuser'@'localhost' to 'networkuser_new'@'%';
|
2.刷新权限
修改用户名后需要刷新
五、删除用户
1.用户删除
1 2 3 4 5 6 7 8 9 10 11
| #删除本地用户 mysql> drop user 'localuser'@'localhost'; #删除外网用户 mysql> drop user 'networkuser'@'%';
#或者
# 删除本地用户 mysql> delete from user Where User='localuser' and Host='localhost'; # 删除外网用户 mysql> delete from user Where User='networkuser' and Host='%';
|
2.刷新权限
删除用户后需要刷新
六、权限查询
查看mysql数据库中的所有用户
1
| SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
|
查看某个用户的权限
第一种:
1
| show grants for 'nextcloud'@'%';
|
第二种:
1
| select * from mysql.user where user='root' G;
|
第三种:使用MySQL授权语句来查看用户权限,使用以下语句
1
| grant select,insert,update,delete on [table name] to ‘root’@'%(或者localhost)';
|
查看当前用户