Mysql权限操作语句

  • mysql授权语句语法
  • 用户未存在
  • 用户已存在
  • mysql回收权限语句
  • 回收语句语法
  • 授权远程连接(用于搭建公共数据库,开放连接)


mysql授权语句语法

用户未存在

-- 授权并创建用户语法
grant all privileges on *.* to '用户名'@'主机地址' identified by '密码' with grant option
#all privileges:代表全部权限。(insert|update|delete|select|alter|create)等
#*.*:代表全部数据据库的全部表。修改成A数据库的全部表为(A.*)
#用户名:登录mysql的用户名称
#主机地址:一般为localhost,指定本地的用户。如果授权其他地址的用户则填写对应的IP地址,或者直接设置为%,所有地址都可以。
#identified by 密码:代表直接创建用户,密码为by后面的字符。如果不加上identified by 密码,代表直接去mysql数据库下的user表查找该用户进行授权。
#with grant option:代表该用户可以将自己拥有的权限赋予其他用户。

备注:如果用户不存在,授权语句也没有identified by ‘密码’,则会报错Can’t find any matching row in the user table。另外补充,public关键字可以代替所有用户。(grant xx on xx to public)
提示:如果授权语句执行后,修改不生效。就执行刷新语句。

FLUSH PRIVILEGES;

用户已存在

grant all privileges on *.* to '用户名'@'主机地址' with grant option

mysql回收权限语句

回收语句语法

REVOKE 相关权限,多个用逗号分开 ON 对象类型和对象名称 FROM 用户名和主机地址;

例子:备注(前提是该用户拥有此权限,不然会报错)
There is no such grant defined for user ‘text’ on host ‘localhost’

-- 回收本机下的text用户的所有数据库的所有表权限
REVOKE ALL PRIVILEGES ON *.* FROM 'text'@'localhost';
-- 回收本机下text用户查询数据库A中a表的权限
REVOKE select ON table A.a FROM 'text'@'localhost';
-- 回收本机下text用户查新增和删除数据库A中a表的权限
REVOKE insert,delete ON table A.a FROM 'text'@'localhost';
-- 回收本机下text用户和dev用户新增和删除数据库A中a表的权限
REVOKE insert,delete ON table A.a FROM 'text'@'localhost','dev'@'localhost';
-- 回收本机下所有用户新增和删除数据库A中a表的权限
REVOKE insert,delete ON table A.a FROM public;

授权远程连接(用于搭建公共数据库,开放连接)

mysql自带一个主机地址为通配符%的root用户。我们只需要将该root用户授权即可。

grant all privileges on *.* to 'root'@'%' with grant option;
FLUSH PRIVILEGES; -- 刷新权限

又或者指定网段。例如:指定在192.168.1.xxx网段下,才可以使用root用户登录。(密码默认为root)

grant all privileges on *.* to 'root'@'192.168.1.%' with grant option;
FLUSH PRIVILEGES; -- 刷新权限

又或者创建一个新用户dev,密码为root。专门用于192.168.1.xx的非主机地址访问。

grant all privileges on *.* to 'dev'@'192.168.1.%' identified by 'root' with grant option;
FLUSH PRIVILEGES; -- 刷新权限