Skip to main content

MySQL 用户管理和权限授予

· 3 min read
Zeffon Wu

MySQL 用户权限管理是 MySQL 主要功能之一。平时我们新建好的 MySQL 默认使用的是 root 账户。虽然在个人使用的时候很方便,但是这是很不安全的做法。

前言

MySQL 用户权限管理是 MySQL 主要功能之一。平时我们新建好的 MySQL 默认使用的是 root 账户。虽然在个人使用的时候很方便,但是这是很不安全的做法。 所以我们需要分用户管理不同数据库。

正文

用户管理

创建用户是需要用到 mysql 指令的,所以的话就需要进入 mysql 的控制台进行相关的指令操作。

  1. 使用默认root用户登陆 mysql
$ mysql -u root -p
$ Enter password: # 输入mysql的密码
$ mysql> # 成功进入mysql的控制台
  1. 创建用户
mysql> create user 'test123'@'localhost' identified by 'password';  # 创建本地服务器才可访问的
mysql> create user 'test123'@'%' identified by 'password'; # 创建远程可访问的
  1. 更新权限
mysql> flush privileges;  # 创建成功后记得更新数据库的权限
  1. 查看数据库的用户
mysql> use mysql;
mysql> select host, user from user;
  1. 删除用户
mysql> delete from user where user='test123' and host='localhost';
mysql> flush privileges;
  1. 修改用户密码
mysql> update mysql.user set password=password('newpassword') where user="test123" and host="%";
mysql> flush privileges;

授予权限

创建好用户之后,该用户下是没有任何可操作的数据可,所以需要进行相关的授权操作

  1. 分配权限

命令:grant 权限 on 数据库.数据表 to '用户' @ '主机名' 密码认证; 所以当我们要分配所有数据库给用户时,可以采用 *.*来代替

# 指定数据库授权
mysql> grant all privileges on `dbname`.* to 'test123'@'%' identified by 'newpassword';
# 所有数据库授权
mysql> grant all privileges on *.* to 'test123'@'%' identified by 'newpassword';
  1. 更新权限
mysql> flush privileges;
  1. 回收权限

命令:revoke 权限 on 数据库.数据表 from '用户'@'主机名'; 收回某一用户某一张数据表的所有权限

# 回收test123表的所有权限
mysql> revoke all on *.* from 'test123'@'%';