DCL管理用户
用户权限表
放在Mysql的user表中
默认用户登录会给与用户同名的一个数据库的所有权限(比方说新建一个用户zx,然后你数据库有一个zx数据库,当登录zx用户,就会有zx数据库的权限)
用户信息查看(修改需要重启服务)
1)查看当前登录的用户
mysql>: select user();
2)root权限下可以查看所有用户信息
mysql>: select * from mysql.user;
mysql>: select * from mysql.user \G
mysql>: select user,password,host from mysql.user;
其中127.0.0.1这个host是没意义的,指定他,他密码找的还是localhost的
3)root登录下,删除游客(操作后要重启mysql服务)
mysql>: delete from mysql.user where user='';
4)root登录下,修改密码(操作后要重启mysql服务)
mysql>: update mysql.user set password=password('12345678') where host='localhost';
mysql>:update user set password for 'username'@'host' =password('密码')
password()为mysql的加密函数,登录的时候,输入的密码是通过加密的,所以在设置密码的时候要提前加密
5)没有登录
>: mysqladmin -u用户名 -p旧密码 -h域名 password "新密码"
eg>: mysqladmin -uroot -p12345678 -hlocalhost password "root"
创建用户权限管理(修改需要重启服务)
新建用户
格式:create user "username"@"host" identified by "password";
eg:
1.mysql->create user 'test'@'localhost' identified by 'zx';
2.mysql->create user 'test'@'192.168.11.213' identified by 'zx';
3.mysql->create user 'test'@'%' identified by 'zx';
1)授予用户通过外网IP对于该数据库的全部权限
grant all privileges on test.* to 'test'@'%' ;
2)授予用户在本地服务器对该所有的全部权限
grant all privileges on *.* to 'zx'@'localhost';
3)给予查询权限
grant select on test.* to 'user1'@'localhost';
4)添加插入权限
grant insert on test.* to 'user1'@'localhost';
5)添加删除权限
grant delete on test.* to 'user1'@'localhost';
6)添加权限
grant update on test.* to 'user1'@'localhost';
7)刷新权限
flush privileges;
8)查看权限
show grants;
9)查看某个用户的权限
show grants for 'zx'@'%';
10)删除某个用户的某个表的某个权限
revoke delete on test.* from 'zx'@'localhost';
权限查看分解
**GRANT USAGE ON *.* TO 'zx'@'%' IDENTIFIED BY PASSWORD '*88B4FF8DF6ADE78A1710A231962A826C0D75E227'**
USAGE:表示可以登录
遇到错误
ERROR 1396 (HY000): Operation CREATE USER failed for 'XXXX'@'XXXX'
1.delete删除mysql.user表里面的用户,然后在此创建报错
2.解决办法 drop user “zx”@“%”,然后就可以创建这个用户了