mysql用户管理
创建用户
CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
username
:用户名。host
:指定用户可以从哪些主机连接。例如,localhost
仅允许本地连接,%
允许从任何主机连接。password
:用户的密码。
CREATE USER 'test'@'%' IDENTIFIED BY 'password123';
授权权限
GRANT privileges ON database_name.* TO ‘username’@’host’;
创建用户后,你需要授予他们访问权限,使用 GRANT 命令来授予权限:
privileges
:所需的权限,如ALL PRIVILEGES
、SELECT
、INSERT
、UPDATE
、DELETE
等。database_name.*
:表示对某个数据库或表授予权限。database_name.*
表示对整个数据库的所有表授予权限,database_name.table_name
表示对指定的表授予权限。TO 'username'@'host'
:指定授予权限的用户和主机。
1
GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';
刷新权限
FLUSH PRIVILEGES;
授予或撤销权限后,需要刷新权限使更改生效。
查看用户权限
SHOW GRANTS FOR ‘username’@’host’;
撤销权限
REVOKE privileges ON database_name.* FROM ‘username’@’host’;
1
REVOKE ALL PRIVILEGES ON test_db.* FROM 'john'@'localhost';
删除用户
DROP USER ‘username’@’host’;
要删除一个 MySQL 用户,可以使用 DROP USER 命令:
'username'@'host'
:指定要删除的用户名和主机。
1
DROP USER 'john'@'localhost';
修改用户密码
ALTER USER ‘username’@’host’ IDENTIFIED BY ‘new_password’;
要修改用户的密码,可以使用 ALTER USER 命令:
'username'@'host'
:指定要修改密码的用户名和主机。'new_password'
:新的密码。
1
ALTER USER 'john'@'localhost' IDENTIFIED BY 'newpassword456';
修改用户主机
要更改用户的主机(即允许从哪些主机连接),可以先删除用户,再重新创建一个新的用户。
删除旧用户
DROP USER ‘username’@’host’;
1
DROP USER 'john'@'localhost';
重新创建用户并指定新的主机
CREATE USER ‘username’@’new_host’ IDENTIFIED BY ‘password’;
1
CREATE USER 'john'@'%' IDENTIFIED BY 'password123';
查询主机用户
SELECT User, Host FROM mysql.user;
创建用户时指定权限
在创建用户时,也可以同时授予权限(在 MySQL 8.0.16 及更高版本):
CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
'username'@'host'
:指定要创建的用户名和主机。'password'
:用户的密码。WITH GRANT OPTION
:允许用户授予权限给其他用户。
1
CREATE USER 'john'@'localhost' IDENTIFIED BY 'password123' WITH GRANT OPTION;
GRANT privileges ON database_name.* TO ‘username’@’host’;
创建用户后,你需要授予他们访问权限,使用 GRANT 命令来授予权限:
privileges
:所需的权限,如ALL PRIVILEGES
、SELECT
、INSERT
、UPDATE
、DELETE
等。database_name.*
:表示对某个数据库或表授予权限。database_name.*
表示对整个数据库的所有表授予权限,database_name.table_name
表示对指定的表授予权限。TO 'username'@'host'
:指定授予权限的用户和主机。
1
GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';