1、先使用能登录mysql的账号登录mysql
2、创建用户
语法:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
参数说明:
username: 用户名;
host:指定在哪个主机上可以登录,本机可用localhost,%通配符, 所有远程主机; '192.168.0.%' : 该网段下的所有主机。
password:用户登录密码;
3、修改用户
-- 修改当前用户 可远程登录的主机
update mysql.user set host='host' where user='username';--
update mysql.db set host='修改后的IP' where user='要修改的账号';--
update mysql.tables_priv set host='修改后的IP' where user='要修改的账号';--
flush privileges;
4、给账号赋予权限语法如下:
create user 'typt'@'%' identified by '123456'; -- 创建用户
GRANT all privileges ON typt.* TO 'typt'@'%'; -- 将所有权限赋予给用户
FLUSH PRIVILEGES; -- 然后刷新权限使更改生效
5、创建账号时并赋予权限
语法:
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 DATABASES | SHOW DATABASES显示所有数据库 |
SHOW VIEW | 允许使用SHOW CREATE VIEW |
SHUTDOWN | 允许使用SHUTDOWN关闭数据库服务器 |
UPDATE | 允许使用UPDATE |
GRANT OPTION | 允许授予权限 |
示例:创建用户user1,设置密码123456,并赋予test数据库所有权限,并允许将自己的权限授权给其它用户。
grant all privileges on test.* to 'user1'@'%' identified by '1234567' with grant option;
FLUSH PRIVILEGES;
先创建用户,再授权:
create user 'user1'@'%' identified by '123456'; -- 创建用户
GRANT all privileges ON test.* TO 'user1'@'%'; -- 将所有权限赋予给用户
FLUSH PRIVILEGES; -- 刷新权限使更改生效
其他语法:
# 查看用户拥有的权限
SHOW GRANTS FOR 'user1'@'%';
# 删除用户
DROP USER 'user1'@'%'; -- 删除用户user1,用户名(User)和主机名(Host)构成
FLUSH PRIVILEGES; -- 刷新权限
# 禁用用户
ALTER USER 'user1'@'%' ACCOUNT lock; -- 禁用账号user1
FLUSH PRIVILEGES; -- 刷新权限
# 解除禁用
ALTER USER 'user1'@'%' ACCOUNT UNLOCK; -- 解除禁用账号user1
FLUSH PRIVILEGES; -- 刷新权限
# 重命名用户名
-- 语法:
rename user '用户名'@'IP或者域名' to '新用户名'@'IP或者域名';
-- eg:将user1用户重命名为user2
rename user 'user1'@'%' to 'user2'@'%';
# 修改用户密码
set password for '用户名'@'IP或者域名'=password('新密码')
# 撤销权限REVOKE
REVOKE SELECT ON test.* FROM 'user1'@'%'; -- 撤销user1在数据库test的权限
# 查看密码过期时间
show variables like 'default_password_lifetime';-- 0表示永不过期
# 设置密码过期时间为180天
set global default_password_lifetime=180;
# 强制用户密码过期
ALTER USER 'user1'@'%' PASSWORD EXPIRE;