查看有哪些用户
Mysql中用户信息存储在 mysql.user 表中,使用相应sql查询语句即可查询出用户信息
# 查看user表表结构命令
desc mysql.user
# 查询用户表
select user, host, authentication_string, plugin from mysql.user;
创建用户
Mysql 使用 user + host 唯一标识用户,也就是说 ccc@‘%’ 和 ccc@‘192.168.59.%’ 不是同一个用户。host代表允许登录的ip,'%'表示所有ip都允许登录,'192.168.59.%'表示只有 192.168.59.1 ~ 192.168.59.255 的ip才能登录。
create user ccc@'%';
# 带密码
create user root@'%' identified by '123456';
create user test@'%' identified by '123';
sha2是mysql8新特性,一些老应用可能不兼容(比如在主从复制,从节点认证会失败),需要使用老的加密方式,如下:
create user xxx@'%' identified with mysql_native_password by '123';
需要授权后才能远程登录
授予所有权限语句如下:
GRANT ALL ON . TO ‘ccc’@‘%’;
修改密码
不建议修改用户名,host(可以删除后新建)
# 更改密码
alter user ccc@'%' identified by '123456';
# 更改加密方式和密码
alter user ccc@'%' identified with mysql_native_password by '123';
删除用户
4.1 锁定用户
删除用户前可以先锁定用户,一段时间后没人反馈账号问题连不上数据库说明该账号已未使用,再删除
# 锁定用户
alter user ccc@'%' account lock;
# 解锁
alter user ccc@'%' account unlock;
# 查看锁定情况
select user, host, authentication_string, plugin, account_locked from mysql.user;
4.2 删除用户
删除用户后权限也会丢失,谨慎删除
注意别删除root@‘localhost’
drop user ccc@'%';
管理员忘记密码
忘记密码
https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
- 关闭mysqld
systemctl stop mysqld
- 使用以下命令启动
# --skip-grant-tables 跳过登录
# --skip-networking 跳过tcp,使用本地socket(防止外部用户进入mysql)
# & 后台运行
mysqld_safe --skip-grant-tables --skip-networking &
- 运行后即可进入mysql,用户名密码随便写都行
- 登录后更改密码
# 加载授权表
flush privileges;
# 更改密码
alter user root@'%' identified by '123456';
ps:不执行 flush privileges; 会报以下提示
更改密码前先执行 flush privileges; 加载权限
- 退出数据库重启即可
# 退出数据库
exit
# 重启
systemctl restart mysqld