创建账号时并赋予权限语法如下:
grantallprivilegeson*.*to'用户名'@'登录IP或者域名' identified by'登录密码'withgrantoption;
- all privileges: 表示授权用户全部权限,当然你也可以指定赋予具体权限,比如SELECT、UPDATE、CREATE、DROP等。
- on:表示这些权限可以作用于哪些数据库和哪些表,*.*表示作用于所有数据库和所有表,格式为数据库名.表名。比如有一个test库,想让yxc用户拥有查看test库所有表的权限,那么可以这样写:
grant SELECT on test.* to 'yxc'@'%' identified by '登录密码';
- to:将权限授予哪个用户。格式:
'用户名'@'登录IP或域名'
。这里登录IP或域名后面如果是’localhost’表示该用户只能在本地主机上进行访问,如果是通配符’%'代表允许从任何主机登录。 - IDENTIFIED by:指定用户的登录密码。
- with grant option:表示允许用户将自己的权限授权给其它用户。
部分权限含义如下:
权限含义ALL [PRIVILEGES]设置除GRANT OPTION之外的所有简单权限ALTER允许使用ALTER TABLEALTER ROUTINE更改或取消已存储的子程序CREATE允许使用CREATE TABLECREATE USER允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。CREATE VIEW允许使用CREATE VIEWDELETE允许使用DELETEDROP允许使用DROP TABLEINDEX允许使用CREATE INDEX和DROP INDEXINSERT允许使用INSERTSELECT允许使用SELECTSHOW DATABASESSHOW DATABASES显示所有数据库SHOW VIEW允许使用SHOW CREATE VIEWSHUTDOWN允许使用SHUTDOWN关闭数据库服务器UPDATE允许使用UPDATEGRANT OPTION允许授予权限
eg:创建用户yxc,设置密码yxc@224!707,并赋予test数据库所有权限,并允许将自己的权限授权给其它用户。
grantallprivilegeson test.*to'yxc'@'%' identified by'yxc@224!707'withgrantoption;
如果有些MySQL的数据库版本不允许在创建用户时就赋予权限,那么需要将创建和权限赋予分为两步:
createuser'yxc'@'%' identified by'yxc@224!707';-- 创建用户GRANTallprivilegesON test.*TO'yxc'@'%';-- 将所有权限赋予给用户
然后刷新权限使更改生效。
FLUSH PRIVILEGES;
其他语法:
# 查看用户拥有的权限SHOW GRANTS FOR'yxc'@'%';# 删除用户DROPUSER'yxc'@'%';-- 删除用户yxc,用户名(User)和主机名(Host)构成
FLUSH PRIVILEGES;-- 刷新权限# 禁用用户ALTERUSER'yxc'@'%' ACCOUNT lock;-- 禁用账号yxc
FLUSH PRIVILEGES;-- 刷新权限# 解除禁用ALTERUSER'yxc'@'%' ACCOUNT UNLOCK;-- 解除禁用账号yxc
FLUSH PRIVILEGES;-- 刷新权限# 重命名用户名-- 语法:renameuser'用户名'@'IP或者域名'to'新用户名'@'IP或者域名';-- eg:将yxc用户重命名为lyrenameuser'yxc'@'%'to'ly'@'%';# 修改用户密码 set password for'用户名'@'IP或者域名'=password('新密码')# 撤销权限REVOKEREVOKESELECTON test.*FROM'yxc'@'%';-- 撤销yxc在数据库test的权限# 查看密码过期时间show variables like'default_password_lifetime';-- 0表示永不过期# 设置密码过期时间为180天setglobal default_password_lifetime=180;# 强制用户密码过期ALTERUSER'yxc'@'%' PASSWORD EXPIRE;
更多技术干货,请持续关注程序员大佬超。
原创不易,转载请务必注明出处。
版权归原作者 程序员大佬超 所有, 如有侵权,请联系我们删除。