跳到主要内容

用户管理

一、用户管理

普通用户、root 用户。

1、登录 MySQL

mysql -h hostname|hostIP -P port -u username -p DatabaseName -e "SQL 语句"
  • -h 后面接主机名或 IP
  • -P MySQL 服务的端口
  • -u 用户名
  • -p 提示输入密码
  • DatabaseName 可以指定登录到哪一个数据库
  • -e 后面接 SQL 语句,登录 MySQL 服务器以后即可执行这个 SQL 语句,然后退出 MySQL 服务器。
mysql -h localhost -P 3306 -u root -p mysql -e "select host,user from user"

2、创建用户

-- 查询所有用户
select * from user;
-- host 默认是 %
create user user1 identified by '123456';
-- 指定 host 为 localhost
create user 'user1'@'localhost' identified by '1234';

这两条新建用户的 SQL 都会执行成功。通过 desc user; 可以查看到 user 表采用的是 host + user 作为联合主键的。

3、修改用户

update mysql.user set user = 'user2' where user = 'user1' and host = 'localhost';

flush privileges;

4、删除用户

-- 直接删除用户,默认删除 host 为 % 的用户
drop user username;
drop user 'user1'@'localhost','user2'@'localhost';
-- 在 user 表中删除(不推荐,1. 有潜在风险删除多个用户。 2. 不利于审计,这种方式删除不会留下记录/日志。 3. 不灵活。)
delete from user where user='user2';

5、设置当前用户密码

1、修改当前用户密码

-- 推荐
alter user user() identified by 'new_password';
set password='new_password';
-- 在 8.0 中执行失败,5.7 中有效。
set password=password('new_password');

2、修改其他用户密码

-- 推荐
alter user 'username'@'host' identified by 'password';
set passowrd for 'username'@'host'='new_password';

3、通过 update 语句修改密码

-- 不建议 MySQL8.0 不支持
update mysql.user set authentication_string = password('new_password')
where user='username' ans host= 'host';
flush privileges;

6、密码管理

1、密码过期策略

设置账号密码过期

-- 需要用户修改之后才能进行其他操作。
alter user username password expire;
-- 默认单位是天
-- default_password_lifetime
-- 密码每隔 180 天过期。
set persist default_password_lifetime=180;

单独设置用户的密码有效期

-- 90 天有效期
create user 'user1'@'localhost' identified by 'password' password expire interval 90 day;
alter user 'user1'@'localhost' password expire interval 90 day;

-- 永不过期
create user 'user1'@'localhost' identified by 'password' password expire never;
alter user 'user1'@'localhost' password expire never;

-- 使用默认过期策略
create user 'user1'@'localhost' identified by 'password' password expire default;
alter user 'user1'@'localhost' password expire default;

2、密码重用策略

password_history:密码重用的数量 password_reuse_interval:规定密码的重用周期