MySQL用户管理与权限控制
介绍MySQL数据库的用户管理和权限控制机制,并提供相关SQL语句示例。
创建用户
在MySQL中,可以使用语句创建用户,并设置其登录信息和主机权限。
-- 创建只能本地登录的用户'test',密码为'1234'
mysql> INSERT INTO mysql.user(Host, User, Password) VALUES ("localhost", "test", PASSWORD("1234"));
-- 创建可以远程登录的用户'remote_user',密码为'password',允许从任何主机连接
mysql> INSERT INTO mysql.user(Host, User, Password) VALUES ("%", "remote_user", PASSWORD("password"));
授权
授权机制用于控制用户对数据库和表的访问权限。GRANT
语句用于授予权限,其语法如下:
GRANT 权限列表 ON 数据库名.表名 TO 用户名@登录主机 IDENTIFIED BY '密码';
例如:
-- 授予用户'test'对数据库'testDB'的所有权限
mysql> GRANT ALL PRIVILEGES ON testDB.* TO test@localhost IDENTIFIED BY '1234';
-- 授予用户'test'对数据库'testDB'的SELECT和UPDATE权限
mysql> GRANT SELECT, UPDATE ON testDB.* TO test@localhost IDENTIFIED BY '1234';
常用的权限包括:
:读取数据
:插入数据
:更新数据
:删除数据
:修改表结构
:创建数据库/表
:删除数据库/表
注意: 授权操作后需要使用FLUSH PRIVILEGES;
命令刷新权限缓存。
删除用户
可以使用语句删除用户:
mysql> DELETE FROM user WHERE User='test' AND Host='localhost';
mysql> FLUSH PRIVILEGES;
回收权限
REVOKE
语句用于回收用户的权限,其语法与GRANT
语句类似:
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@登录主机;
例如:
-- 回收用户'test'对数据库'testDB'的所有权限
mysql> REVOKE ALL PRIVILEGES ON testDB.* FROM test@localhost;
mysql> FLUSH PRIVILEGES;