如何使用priv_type 进行授权
1、单个授权
GRANT priv_type ON database.table TO user[IDENTIFIED BY [PASSWORD] 'password'] [,user [IDENTIFIED BY [PASSWORD] 'password']...]
priv_type代表允许操作的权限。
database.table代表数据库名.表名
注意*代表所有,如database.*代表该数据库的所有表,*.*代表所有数据库的所有表
user由用户名(User)和主机名(Host)构成,中间用@隔开,最好加上单引号,不加也可以执行通过。
2、多个权限授权使用:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
-- 权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
-- 当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
-- 当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
-- 用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
-- ‘连接口令’不能为空,否则创建失败。
password代表设置的密码;
例子
授权所有数据库的所有表的所有权限给ip为任意值用户名为test密码为pwd的用户
GRANT ALL ON *.* TO 'test'@'%' IDENTIFIED BY 'pwd';
授权mydb数据库的所有表的增删改查权限给ip为1.1.1.1用户名为test密码为pwd的用户
GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'test'@'1.1.1.1' IDENTIFIED BY 'pwd';
授权mydb数据库的stu表的修改权限给ip为1.1.1.1用户名为test密码为pwd的用户
GRANT UPDATE(name,age) ON mydb.stu TO 'test'@'1.1.1.1' IDENTIFIED BY 'pwd';
实践授权
mysql -u root –p //会提示输入密码,输入上面设置的root新密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'newpwd' WITH GRANT OPTION; //*.*表示不对连接的ip做限制
GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password'; 针对某个IP进行授权连接
授权完成提示内容:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'testpwd' WITH GRANT OPTION
-> ;
Query OK, 0 rows affected (0.00 sec)
如果不需要进行全部授权如何删除授权呢?删除不对连接的ip做限制的授权root@'%' 。
mysql> drop user root@'%';
Query OK, 0 rows affected (0.00 sec)
这里的%表示刚刚授权的对象,%表示所有的,如果需要删除某个授权,就将%替换为授权时填写的IP
mysql> drop user root@'192.168.1.4';
Query OK, 0 rows affected (0.00 sec)
如果没有进行授权,链接将会出现错误,这里我拿的是Navicat Premium工具做的测试。
罗列已经授权的用户列表信息 select * from information_schema.user_privileges;