MySQL用户管理
1. 查看用户信息
MySQL 的用户信息都存储在 mysql
数据库中。
mysql
select USER,HOST,authentication_string from user;
USER: 用户名。
HOST: 表示这个用户可以从哪个主机登录,localhost 表示只能从本机登录。
authentication_string: 用户密码通过加密后显示的字符。
user 表中还有一堆的权限字段,以 *_priv
的方式命名,可以查看用户具有哪些权限:

2. 创建用户
创建本地用户:
本地用户只能从本机访问数据库。
mysql
create user 'user_name'@'localhost' identified by 'password';
-- 或
create user 'user_name'@'127.0.0.1' identified by 'password';
创建公网用户:
mysql
create user 'user_name'@'%' identified by 'password';
也可以指定公网用户具体通过哪个 IP 登录才能访问数据库。
创建完用户后,需要刷新新用户才能访问数据库:
mysql
flush privileges;
3. 删除用户
mysql
drop user '用户名'@'主机名';
4. 修改用户密码
用户修改自己的密码:
mysql
set password=password('新密码');
root修改指定用户密码:
mysql
set password for '用户名'@'主机名'=password('新密码');
5. 数据库权限
权限 | 列 | 上下文 |
---|---|---|
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 | reate_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 CLIENI | Repl_client_priv | 服务器管理 |
REPLICATION SLAVE | Repl_slave_priv | 服务器管理 |
SHOW DATABASES | Show_db_priv | 服务器管理 |
SHUTDOWN | Shut_dow_priv | 服务器管理 |
SUPER | Super_priv | 服务器管理 |
5.1 用户授权
新创建的用户没有任何权限,需要手动给用户授权。
mysql
grant 权限列表 on 库.对象名 to '用户名'@'登录IP' [identified by 'password'];
库.对象名: 可使用 *.*
代表本系统中所有数据库的所有对象;可使用 库.*
表示某个数据库中的所有对象。
identified by: 为可选项,当授权用户不存在时会使用密码创建用户并授权;用户存在时会授权并修改用户密码。
对用户授权后,如果没有生效,需要刷新:
mysql
flush privileges;
5.2 回收权限
mysql
revoke 权限列表 on 库.对象名 from '用户名'@'登录IP';