MySQL的用户管理
MySQL的用户信息都保存在数据库mysql的user表中,因此MySQL的用户操作实际上就是对 mysql.user表的增删查改的操作,下图中展示了mysql.user的表结构:
从图中可以看到,在该表中可以设置用户的所有信息,包括用户名,密码,权限等等。 Notice:password字段是通过PASSWORD('')函数生成的。除了修改user表的方式来操作MySQL 用户外,MySQL有一些额外的命令用于创建或删除MySQL用户。
创建用户
CREATE USER创建无权限用户
语法:
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'][, user [IDENTIFIED BY [PASSWORD] 'password']] ...
示例:
create user test@localhost identified by 'test';//创建一个用户名为test,密码为test的用户,该用户没有任何权限
GRANT方式创建带权限用户
语法:
GRANT [ALL | [SELECT,DELETE...]] PRIVILEGES ON {databasename|*}.{tablename|*}... TO username IDENTIFIED BY password;
示例:
GRANT ALL PRIVILEGES ON . TO test@% IDENTIFIED BY 'test';
删除用户
语法:
DROP USER username;//username指的是带host的username,即test@localhost,如果不指定host,host就为%.
示例:
DROP USER test@localhost;
MySQL权限说明
查看某个用户的权限
mysql> show grants for root@localhost;
各权限解释
权限 | 列 | 说明 |
---|---|---|
CREATE | `Create_priv` | 创建数据库和表 |
DROP | `Drop_priv` | 抛弃(删除)数据库和表 |
GRANT OPTION | `Grant_priv` | 数据库、表或保存的程序 |
REFERENCES | `References_priv` | 未使用 |
ALTER | `Alter_priv` | 修改表和索引 |
DELETE | `Delete_priv` | 表 |
INDEX | `Index_priv` | 创建或抛弃索引 |
INSERT | `Insert_priv` | 向表中插入新行 |
SELECT | `Select_priv` | 检索表中的记录 |
UPDATE | `Update_priv` | 修改现存表记录 |
CREATE VIEW | `Create_view_priv` | 视图 |
SHOW VIEW | `Show_view_priv` | 视图 |
ALTER ROUTINE | `Alter_routine_priv` | 保存的程序 |
CREATE ROUTINE | `Create_routine_priv` | 保存的程序 |
EXECUTE | `Execute_priv` | 保存的程序 |
FILE | `File_priv` | 读或写服务器上的文件 |
CREATE TEMPORARY TABLES | `Create_tmp_table_priv` | 服务器管理 |
LOCK TABLES | `Lock_tables_priv` | 服务器管理 |
CREATE USER | `Create_user_priv` | 服务器管理 |
PROCESS | `Process_priv` | 查看服务器中执行的线程信息或杀死线程 |
RELOAD | `Reload_priv` | 重载授权表或清空日志、主机缓存或表缓存 |
REPLICATION CLIENT | `Repl_client_priv` | 服务器管理 |
REPLICATION SLAVE | `Repl_slave_priv` | 服务器管理 |
SHOW DATABASES | `Show_db_priv` | 服务器管理 |
SHUTDOWN | `Shutdown_priv` | 关闭服务器 |
SUPER | `Super_priv` | 服务器管理 |