Administrator
发布于 2021-12-16 / 5 阅读 / 0 评论 / 0 点赞

MariaDb数据库用户管理配置

Mariadb数据库初始配置

数据库初始化设定仅适用于调试环境和一般低访问要求。任何生产环境请勿使用默认配置!

用户权限

用户权限默认为root账号,权限极高且极易被攻破,任何情况下都不应该选择默认用户设定。

基本的修改原则

  • 建立超级管理(拥有所有权限)最好是仅限localhost或127.0.0.1的本机方式来保证安全性。密码尽量使用无规则长字符串
  • 建立分级管理(拥有部分权限)权限分类可以按照具体业务逻辑,如果侧重成员管理,就按照对成员访问级别来划分,如果侧重对数据的操作,就按照对表的访问权限来划分。
  • 针对业务单独划分权限用户,拒绝任何多余的权限分配

权限作用表

点击查看详细内容

mysql所有权限表和maria一致

关键度值越大越影响安全性

关键度低不代表不会影响数据安全

权限名 描述 关键度 最低版本
Alter 重命名和修改表结构 1
Alter Routine 修改或删除存储函数及函数,此权限是在中引入的 3 5.0
Create 创建新的数据库和表 1
Create Routine 更改或放弃存储过程和函数 3 5.0
Create Temporary Tables 创建临时表 1
Create User 创建用户 2
Create View 创建视图 1 5.0
Delete 使用DELETE命令删除现有数据 3
Drop 删除现有数据库和表 3
Event 创建、修改和删除事件 3 5.1.6
Execute 执行存储过程 3 5.0
File 文件访问 3
Grant Option 授予用户可以编辑其他用户的权限 5
Index 创建和删除表索引 2
Insert 使用INSERT命令插入数据 1
Lock Tables 锁定表 3
Process 查看进程 4
References 未来功能的占位符,没有作用 0
Reload 执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表 4
Repliction Client 复制从服务器和主服务器的位置 3
Repliction Slave 读取用于维护复制数据库环境的二进制日志文件,此用户位于主系统中,有利于主机和客户机之间的通信 3
Select 使用SELECT命令选择数据 1
Show Databese 查看所有数据库的名字,包括用户拥有足够访问权限的数据库,可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因 3
Show View 查看视图或了解视图执行 1 5.0
Shutdown 关闭MySQL服务器,将此权限提供给超级管理账户之外的任何用户时,都应当非常谨慎 5
Super 执行超级管理功能,例如KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令 5
Trigger 确定用户能否创建和删除触发器 2 5.16
Update 使用UPDATE命令修改现有数据 3

用户管理

点击查看详细内容

创建用户

创建用户时,@后跟随的是主机名或者ip地址,代表访问客户端的条件
‘%’意味着全部的非本地主机授权地址均可访问

create user admin@'%' identified by ‘pwd’

授予权限

这样是全部授权

GRANT ALL ON *.* TO `admin`@`%` WITH GRANT OPTION;

这样也是全部授权,但删减其中的不同权限后可达到控制权限的目的

GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create User, Create View, Delete, Drop, Event, Execute, File, Grant Option, Index, Insert, Lock Tables, Process, References, Reload, Replication Client, Replication Slave, Select, Show Databases, Show View, Shutdown, Super, Trigger, Update ON *.* TO `admin`@`%`;"

想要控制某个数据库的权限时,关键在于ON后面跟随的 *.*参数
*代表全部,点符号前面代表的哪个库,点符号后面代表的哪个表

例如授予test数据库的user表的select和create权限语句如下

GRANT select,create ON test.user TO `admin`@`%`;

值得注意的是这个权限授予等级到了表这一层时是没有创建用户等无关表操作的权限的

授予表的某些列的权限

grant select(id, name, age) on test.user to dba@localhost; 

撤销权限

撤销某个用户的全部权限

REVOKE ALL ON *.* FROM admin@%; 

撤销某个用户的select、create权限

REVOKE select,create ON *.* FROM admin@%; 

基本上可以对应着授予权限方法,将GRANT改为REVOKE,将TO改为FROM后既为撤销授权

刷新权限

每次更新权限后记得刷新权限

FLUSH PRIVILEGES;

查看用户列表

use mysql;
select user,host from mysql.user;

查看用户权限

show grants for admin@'%';

删除用户

删除某个具体到地址的admin用户

Delete FROM user Where User='admin' and Host='localhost';

删除所有符合名称admin的用户

Delete FROM user Where User='admin';

修改密码

use mysql;
update mysql.user set password=password('new pwd') where User="test" and Host="localhost";

查看配置信息的语句


评论