1、仅新建用户(只新建一个用户,不授予任何权限)
create user 'username'[@'ip'] identified by 'password';
-- username 新建用户的用户名-- password 新建用户的密码-- ip 允许连接的ip地址,如不限制使用'%'
2、授权给用户(给已存在的用户授权)
grant all on db_name.table_name to 'username';
-- all 指所有权限,细分权限见附件表1-- db_name 数据库名 可使用*代表全部表-- table_name 数据表名 可使用*代表全部表-- username 用户名
3、新建用户并授权(相当于前面两者的合并版)
grant all privileges on db_name.table_name to 'username'@'ip' identified by 'password' [with grant option];
-- db_name 数据库名 可使用*代表全部表-- table_name 数据表名 可使用*代表全部表-- username 用户名-- ip 允许连接的ip地址,如不限制使用'%'-- password 用户密码-- with grant option 允许权限转让,即:被授权用户可以将权限再授给其他用户
4、撤销用户权限
revoke all on db_name.table_name from username;
-- all 指所有权限,细分权限见附件表1-- db_name 数据库名 可使用*代表全部表-- table_name 数据表名 可使用*代表全部表-- username 用户名
5、刷新权限
flush privileges;
6、修改及删除用户
rename user 'username'@'ip' to 'new_username'@'new_ip';
drop user 'username'@'ip';
-- 有关用户相关操作都可以使用mysql.user表,见附件表2
7、修改用户密码
set password for 'username'@'ip'=password('new_password');-- 已废弃,后期版本会移除-- 有关用户相关操作都可以使用mysql.user表,见附件表2alter USER 'username'@'ip' identified by 'new_password';-- 5.7及以后版本推荐alter user user() identified by 'new_password';-- user()获取当前用户,如:root@localhost-- 如果忘记root密码,进入mysql服务器,修改my.cnf配置文件,在[mysqld]下添加skip-grant-tables,重启mysql后root用户可无需密码进入进行修改密码操作,记得改回来哦
8、设置过期密码
alter user 'username'@'ip' identified by 'password' password EXPIRE ;-- 设置密码已过期alter user 'username'@'ip' identified by 'password' password EXPIRENEVER;-- 设置密码用不过期alter user 'username'@'ip' identified by 'password' password EXPIRE
DEFAULT;-- 设置密码以默认时间过期,取mysql默认参数设置的alter user 'username'@'ip' identified by 'password' password EXPIRE interval 90 day;--
设置密码指定时间过期
附件表1:mysql权限细分
序号 | 数据类(共5个) | 结构类(共12个) | 管理类(共11个) |
---|
1 | SELECT | CREATE | GRANT |
2 | INSERT | ALTER | SUPER |
3 | UPDATE | INDEX | PROCESS |
4 | DELETE | DROP | RELOAD |
5 | FILE | CREATE TEMPORARY TABLES | SHUTDOWN |
6 | | SHOW VIEW | SHOW DATABASES |
7 | | CREATE ROUTINE | LOCK TABLES |
8 | | ALTER ROUTINE | REFERENCES |
9 | | EXECUTE | REPLICATION CLIENT |
10 | | CREATE VIEW | REPLICATION SLAVE |
11 | | EVENT | CREATE USER |
12 | | TRIGGER | |
附件表2:mysql内置user表结构说明
字段名 | 字段值 | 字段含义 |
---|
Host | % | 允许连接的主机IP,%表示无限制 |
User | username | 用户名 |
Select_priv | Y | 查询权限 |
Insert_priv | Y | 插入权限 |
Update_priv | Y | 更新权限 |
Delete_priv | Y | 删除权限 |
Create_priv | Y | 新建库/表权限 |
Drop_priv | Y | 删除库/表权限 |
Reload_priv | Y | 刷新和重新加载MySQL所用各种内部缓存,包括日志、权限、主机、查询和表 |
Shutdown_priv | Y | 关闭MySQL服务权限 |
Process_priv | Y | 查看其他用户的进程权限,命令:SHOW PROCESSLIST |
File_priv | Y | 导入导出数据到文件权限,命令:SELECT INTO OUTFILE/LOAD DATA INFILE |
Grant_priv | Y | 将已经授予给该用户自己的权限再授予其他用户权限 |
References_priv | Y | 只是某些未来功能的占位符,现没有作用 |
Index_priv | Y | 新建与删除索引权限 |
Alter_priv | Y | 修改表结构定义 |
Show_db_priv | Y | 查看服务器上所有数据库名称,包括用户拥有足够访问权限的数据库 |
Super_priv | Y | 执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令 |
Create_tmp_table_priv | Y | 创建临时表权限 |
Lock_tables_priv | Y | 使用LOCK TABLES命令阻止对表的访问/修改权限 |
Execute_priv | Y | 执行存储过程权限,此权限只在MySQL 5.0及更高版本中有意义 |
Repl_slave_priv | Y | 维护复制数据库环境的二进制日志文件权限,此用户位于主系统中,有利于主机和客户机之间的通信 |
Repl_client_priv | Y | 复制从服务器和主服务器的位置权限 |
Create_view_priv | Y | 创建视图权限,此权限只在MySQL 5.0及更高版本中有意义 |
Show_view_priv | Y | 查看视图或了解视图如何执行权限,此权限只在MySQL 5.0及更高版本中有意义 |
Create_routine_priv | Y | 新建存储过程和函数权限,此权限只在MySQL 5.0及更高版本中有意义 |
Alter_routine_priv | Y | 修改存储过程及函数权限,此权限只在MySQL 5.0及更高版本中有意义 |
Create_user_priv | Y | 新建用户权限,命令:CREATE USER |
Event_priv | Y | 创建、修改和删除事件权限,此权限是MySQL 5.1.6新增的 |
Trigger_priv | Y | 创建和删除触发器权限,此权限是MySQL 5.1.6新增的 |
Create_tablespace_priv | Y | 创建表空间权限 |
ssl_type | | |
ssl_cipher | | |
x509_issuer | | |
x509_subject | | |
max_questions | 0 | |
max_updates | 0 | |
max_connections | 0 | |
max_user_connections | 0 | |
plugin | mysql_native_password | |
authentication_string | password | 用户密码 |
password_expired | N | 密码是否过期 |