这是安全的第一道门 | mysql系列(二)用户体系

150 阅读2分钟

前言

一名正在自由职业的程序员的独立开发之路

说明

但凡你在管理你数据库,用户体系是绝对绕不过去了,root的权限肯定不能随便给,密码不能简单,为每个应用数据库创建专门的账户,再细一点还要分每个用户的操作权限

当然我这边就我一个人,不会搞那么复杂,但是安全问题不能儿戏

目标

  1. 能够看懂每个用户有哪些权限
  2. 能够对一个用户进行增删改查

先上代码

前提条件,先用 root 权限登录
# 创建一个用户(admin  123456)
use mysql
create user 'admin'@'%' identified by '123456';
# 分配用户权限,当前数据库所有权限
grant all privileges on * to 'admin'@'%';
# 分配所有的数据库权限
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'localhost' WITH GRANT OPTION;
# 查看用户
select host, user, authentication_string, plugin from mysql.user;
# 修改用户名
use mysql
rename user 'admin'@'%' to 'admin1'@'%';
flush privileges;
# 修改用户密码
alter user 'admin'@'%' identified by '12345678';
# 修改用户权限
grant (权限) on (数据库名字.表明) to 'admin'@'%';
flush privileges;
# 删除用户
drop user 'admin'@'%';

# 查看用户列表和权限
use mysql
select * from user;
select host, user, authentication_string, plugin from user;

几点详细说明

grant ${auth} on ${database}.${table} to '${username}'@'${host}';

${auth}:权限

  • all privileges:全部权限
  • select:查询权限
  • select,insert,update,delete:增删改查权限
  • select,[...]:查...等权限

database:数据库名{table}:具体表名

  • *:代表全部表
  • A,B:代表具体A、B表

${username}:代表用户名

${host}:代表访问权限:

  • %:通配所有host地址权限(可远程访问)
  • localhost:本地权限(不可远程访问)
  • 指定特殊IP访问权限:如10.138.106.102

参考文档

MySQL 8.0 创建用户及授权

MySQL用户创建、登录等(超详细)

关于登录空格问题

mysql -u 用户名 -p密码 
  1. -u 之后接用户名 ,中间可以有空格,有可以没有,但是我建议加空格保险,因为我之前创建了一个 xxx_abc,这样的 不加空格就无法登录
  2. -p 加密码,不要空格,如果没有密码,那么会在后面让你输入

总结

关于mysql的用户权限,知识点比较简单,但是我认为,却是最应该被重视的