MySQL创建新用户并赋予指定数据库权限

avatar
作者
筋斗云
阅读量:0

创建账号时并赋予权限语法如下:

grant all privileges on *.* to '用户名'@'登录IP或者域名' identified by '登录密码' with grant option; 
  • 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 TABLE
ALTER ROUTINE更改或取消已存储的子程序
CREATE允许使用CREATE TABLE
CREATE USER允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。
CREATE VIEW允许使用CREATE VIEW
DELETE允许使用DELETE
DROP允许使用DROP TABLE
INDEX允许使用CREATE INDEX和DROP INDEX
INSERT允许使用INSERT
SELECT允许使用SELECT
SHOW DATABASESSHOW DATABASES显示所有数据库
SHOW VIEW允许使用SHOW CREATE VIEW
SHUTDOWN允许使用SHUTDOWN关闭数据库服务器
UPDATE允许使用UPDATE
GRANT OPTION允许授予权限

eg:创建用户yxc,设置密码yxc@224!707,并赋予test数据库所有权限,并允许将自己的权限授权给其它用户。

grant all privileges on test.* to 'yxc'@'%' identified by 'yxc@224!707' with grant option; 

如果有些MySQL的数据库版本不允许在创建用户时就赋予权限,那么需要将创建和权限赋予分为两步:

create user 'yxc'@'%' identified by 'yxc@224!707'; -- 创建用户 GRANT all privileges ON  test.* TO 'yxc'@'%'; -- 将所有权限赋予给用户 

然后刷新权限使更改生效。

FLUSH PRIVILEGES;  

其他语法:

# 查看用户拥有的权限 SHOW GRANTS FOR 'yxc'@'%';  # 删除用户 DROP USER 'yxc'@'%'; -- 删除用户yxc,用户名(User)和主机名(Host)构成 FLUSH PRIVILEGES; -- 刷新权限  # 禁用用户 ALTER USER 'yxc'@'%' ACCOUNT lock; -- 禁用账号yxc FLUSH PRIVILEGES; -- 刷新权限  # 解除禁用 ALTER USER 'yxc'@'%' ACCOUNT UNLOCK; -- 解除禁用账号yxc FLUSH PRIVILEGES; -- 刷新权限  # 重命名用户名 -- 语法: rename user '用户名'@'IP或者域名' to '新用户名'@'IP或者域名'; -- eg:将yxc用户重命名为ly rename user 'yxc'@'%' to 'ly'@'%';  # 修改用户密码  set password for '用户名'@'IP或者域名'=password('新密码')  # 撤销权限REVOKE REVOKE SELECT ON test.* FROM 'yxc'@'%'; -- 撤销yxc在数据库test的权限  # 查看密码过期时间 show variables like 'default_password_lifetime';-- 0表示永不过期 # 设置密码过期时间为180天 set global default_password_lifetime=180; # 强制用户密码过期 ALTER USER 'yxc'@'%' PASSWORD EXPIRE; 


更多技术干货,请持续关注程序员大佬超。
原创不易,转载请务必注明出处。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!