MySQL 用户权限管理是 MySQL 主要功能之一。平时我们新建好的 MySQL 默认使用的是 root 账户。虽然在个人使用的时候很方便,但是这是很不安全的做法。
前言
MySQL 用户权限管理是 MySQL 主要功能之一。平时我们新建好的 MySQL 默认使用的是 root 账户。虽然在个人使用的时候很方便,但是这是很不安全的做法。 所以我们需要分用户管理不同数据库。
正文
用户管理
创建用户是需要用到 mysql 指令的,所以的话就需要进入 mysql 的控制台进行相关的指令操作。
- 使用默认
root用户
登陆 mysql
$ mysql -u root -p
$ Enter password: # 输入mysql的密码
$ mysql> # 成功进入mysql的控制台
- 创建用户
mysql> create user 'test123'@'localhost' identified by 'password'; # 创建本地服务器才可访问的
mysql> create user 'test123'@'%' identified by 'password'; # 创建远程可访问的
- 更新权限
mysql> flush privileges; # 创建成功后记得更新数据库的权限
- 查看数据库的用户
mysql> use mysql;
mysql> select host, user from user;
- 删除用户
mysql> delete from user where user='test123' and host='localhost';
mysql> flush privileges;
- 修改用户密码
mysql> update mysql.user set password=password('newpassword') where user="test123" and host="%";
mysql> flush privileges;
授予权限
创建好用户之后,该用户下是没有任何可操作的数据可,所以需要进行相关的授权操作
- 分配权限
命令:grant 权限 on 数据库.数据表 to '用户' @ '主机名' 密码认证; 所以当我们要分配所有数据库给用户时,可以采用
*.*
来代替
# 指定数据库授权
mysql> grant all privileges on `dbname`.* to 'test123'@'%' identified by 'newpassword';
# 所有数据库授权
mysql> grant all privileges on *.* to 'test123'@'%' identified by 'newpassword';
- 更新权限
mysql> flush privileges;
- 回收权限
命令:revoke 权限 on 数据库.数据表 from '用户'@'主机名'; 收回某一用户某一张数据表的所有权限
# 回收test123表的所有权限
mysql> revoke all on *.* from 'test123'@'%';