前言
一名正在自由职业的程序员的独立开发之路
说明
但凡你在管理你数据库,用户体系是绝对绕不过去了,root的权限肯定不能随便给,密码不能简单,为每个应用数据库创建专门的账户,再细一点还要分每个用户的操作权限
当然我这边就我一个人,不会搞那么复杂,但是安全问题不能儿戏
目标
- 能够看懂每个用户有哪些权限
- 能够对一个用户进行增删改查
先上代码
前提条件,先用 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 -u 用户名 -p密码
- -u 之后接用户名 ,中间可以有空格,有可以没有,但是我建议加空格保险,因为我之前创建了一个 xxx_abc,这样的 不加空格就无法登录
- -p 加密码,不要空格,如果没有密码,那么会在后面让你输入
总结
关于mysql的用户权限,知识点比较简单,但是我认为,却是最应该被重视的