Mysql8.0 安全配置

这篇具有很好参考价值的文章主要介绍了Mysql8.0 安全配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server for mysql、MariaDB。每个分支都有自己的特色,功能也存在不同的差异。我们平常使用的官方版本是指的ORACLE官方版本的Mysql,官方版本主要分为社区版和企业版,两者的差异主要在一些定制插件方面。今天要说的相关安全配置主要是以mysql 8.0版本介绍。

  1. 口令策略

默认MySQL登录一般通过内部的mysql.user表进行用户名、密码的匹配验证,登录mysql数据库时,连接层接入数据库需要经过mysql.user表中,用户名密码的验证才能登录数据库,如果mysql.user中不存在此用户或者密码不正确,则会返回错误提示。

password_history = 3  新密码不能和前面三次的密码相同;

password_reuse_interval = 90  新密码不能和前面九十天内使用的密码相同;

password_require_current = on 默认为off;为on 时 修改密码需要用户提供当前密码 (开启后修改密码需要验证旧密码,root 用户不需要);

mysql 密码策略是插件形式,默认安装时是没有加载的,可以通过查看插件 show plugins 查看validate_password

安装方法:

mysql> install plugin validate_password soname 'validate_password.dll';

Query OK, 0 rows affected, 1 warning (0.18 sec)

修改my配置文件重启数据库服务

[mysqld]

plugin-load=validate_password=validate_password.dll

查看插件状态

  1. select plugin_name, plugin_status from information_schema.plugins where plugin_name='validate_password'  

plugin_status: ACTIVE 激活

查看参数

  1. mysql>  show variables like 'validate_password%';  
  2. +--------------------------------------+--------+  
  3. | Variable_name                        | Value  |  
  4. +--------------------------------------+--------+  
  5. | validate_password_check_user_name    | ON     |  
  6. | validate_password_dictionary_file    |        |  
  7. | validate_password_length             | 8      |  
  8. | validate_password_mixed_case_count   | 1      |  
  9. | validate_password_number_count       | 1      |  
  10. | validate_password_policy             | MEDIUM |  
  11. | validate_password_special_char_count | 1      |  
  12. +--------------------------------------+--------+  
  13. rows in set, 1 warning (0.00 sec)  

validate_password.length固定密码的总长度;

validate_password.dictionary_file 指定密码验证的文件路径;

validate_password.mixed.case_count整个密码中至少要包含大/小写字母的总个数;

validate_password.number_count整个密码中至少要包含阿拉伯数字的个数;

validate_password_special_char_count整个密码中至少要包含特殊字符的个数;

validate_password.policy 指定密码的强度验证等级,默认为 MEDIUM;

关于 validate_password.policy 的取值:

0/LOW:只验证长度;

1/MEDIUM:验证长度、数字、大小写、特殊字符;

2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;

修改代码

mysql> set global validate_password_policy=LOW;  

Query OK, 0 rows affected (0.00 sec)  

2.角色与权限

MySQL 8.0 版本引入了角色( Role ),角色是权限的集合,可以通过对角色赋权,实现更加快捷统一的管理模式。先创建不同角色,然后授予角色不同权限,最后给用户授予不同的角色。

mysql8.0配置audit_log,网络安全,数据库,安全,数据库,mysql

 文章来源地址https://www.toymoban.com/news/detail-584311.html

角色创建代码

 --创建3个角色:  

mysql> CREATE ROLE 'app_developer''app_read''app_write';  

--给每个角色授权:  

mysql> GRANT ALL ON app_db.* TO 'app_developer';    --:app_db给这个角色所有权限  

mysql> GRANT SELECT ON app_db.* TO 'app_read';      --:app_db给这个角色只读权限  

mysql> GRANT INSERTUPDATEDELETE ON app_db.* TO 'app_write';   --:app_db给这个角色写权限  

--给每个用户授予不同的角色:  

GRANT 'app_developer' TO 'dev1'@'localhost';  

GRANT 'app_read' TO 'read_user1'@'localhost''read_user2'@'localhost';  

GRANT 'app_read''app_write' TO 'rw_user1'@'localhost';  

权限分布

可能设置的权限

表权限

select Insert Update Delete Create Drop Grant References Index Alter

列权限

select Insert Update References

过程权限

execute , Alter Routine , Grant

查看权限 show privileges

mysql8.0配置audit_log,网络安全,数据库,安全,数据库,mysql

系统角色功能默认为 OFF 即不自动激活,建议将该变量activate_all_roles_on_login改为 ON ,这样以后赋予角色给新用户后就不需要再手动激活了。

查看 activate_all_roles_on_login 变量  

mysql> show variables like 'activate_all_roles_on_login';  

+-----------------------------+-------+  

| Variable_name               | Value |  

+-----------------------------+-------+  

| activate_all_roles_on_login | OFF   |  

+-----------------------------+-------+  

1 row in set (1.53 sec)    

启用该变量 先动态启用 之后可以将此参数加入my.cnf配置文件中  

mysql> set global activate_all_roles_on_login = on;  

Query OK, 0 rows affected (0.50 sec)  

3.数据库访问控制

        验证来源主机能通过具体主机名或者IP地址指定的尽量通过使用具体的主机名和 IP 地址来限定来访主机,不能用具体的主机名或者 IP 地址限定的也需要用尽可能小的通配范围来限制,减少使用“%”通配符访问主机带来的潜在风险,最好使用防火墙控制访问权限。

客户端连接通过用户管理模块的验证,建立连接后,就会发送各种Query和Command 给MySQL,以实现客户端应用的各种功能。当 MySQL 接收到客户端的请求之后,访问控制模块是需要校验该用户是否满足提交的请求所需要的权限。权限校验过程是从最大范围的权限往最小范围的权限开始依次校验所涉及到的每个对象的每个权限。

mysql8.0配置audit_log,网络安全,数据库,安全,数据库,mysql

对于密码敏感,但是又需要给外部维护者提供访问权限的情况下无密码访问是有必要的。

创建无密码登录示例

mysql_config_editor set --login-path=fastlogin --user=root --host=localhost --password --prot=3306  --socket=/tmp/mysqld.sock  

Enter password: #第一次需要输入密码    

ll -la .my* #当前路径下生成一个隐藏文件.mylogin.cnf  

mysql_config_editor print --login-path=fastlogin #要查看里面的明细信息  

mysql --login-path=fastlogin  #大功告成,这个时候直接登录  

mysql_config_editor remove -login-path=fastlogin #禁用删除.login文件不会删除  

密码登录的别名: fastlogin 

​​​​​​​4.数据库审计

Mysql社区版默认没有提供审计功能,只能通过开启通用日志功能,通用查询日志以文本文件的形式存储,如果数据库的使用非常频繁,通用查询日志将会占用非常大的磁盘空间,对系统性能影响较大。一般情况尽量减少使用。这里可推荐使用Percona for msyql 审计

安装插件

INSTALL PLUGIN audit_log SONAME 'audit_log.so';  

审计参数:

show session  variables like '%audit%';  

+-----------------------------+---------------+  

| Variable_name               | Value         |  

+-----------------------------+---------------+  

| audit_log_buffer_size       | 1048576       |#审计缓冲区的大小,仅对 ASYNCHRONOUS  PERFORMANCE 策略有意义。  

| audit_log_exclude_accounts  |               |#排除用户  

| audit_log_exclude_commands  |               |  

| audit_log_exclude_databases |               |#排除数据库  

| audit_log_file              | audit.log     |#日志路径  

| audit_log_flush             | OFF           |#句柄  

| audit_log_format            | OLD           |  

| audit_log_handler           | FILE          |#类型  

| audit_log_include_accounts  |               |#包含用户  

| audit_log_include_commands  |               |  

| audit_log_include_databases |               |#包含数据训  

| audit_log_policy            | ALL           |#策略  none 关闭 ALL 开启)  

| audit_log_rotate_on_size    | 0             |#限制日志文件的大小  

| audit_log_rotations         | 0             |#指定日志文件的数量  

| audit_log_strategy          | ASYNCHRONOUS  |#异步记录,等待输出缓冲区中的空间  

| audit_log_syslog_facility   | LOG_USER      |  

| audit_log_syslog_ident      | percona-audit |  

| audit_log_syslog_priority   | LOG_INFO      |#rsyslog  

+-----------------------------+---------------+  

18 rows in set (0.00 sec)  

关闭审计

使用下面这条命令,就可以关闭审计日志功能  

set global audit_log_policy=none;   

如果这是永久性更改,请将该值添加到my.cnf文件中。

5.漏洞补丁升级

        补丁建议使用官文包,下载的最好去验证MD5值,防止病毒软件包被篡改植入勒索病毒,安装包不完整或者损坏造成服务不能使用。最简单有效的方法,下载新版本安装。

6.通信信息安全

        MySQL 提供的网络访问模式,主要有socket 和TCP /IP 两类, 并且对于每个实例,只能对应一个端口,如果使用本地访问,启动MySQL的时候通过使用“--skip-networking” 参数选项,让 MySQL 不通过 TCP/IP 监听网络请求,使用socket和客户端连接交互,目前项目大部分应用场景都在网络环境下,通过网络连接提供服务,所以要解决网络方面存在的潜在安全威胁,局域网络通过网络防火墙设备控制出口的安全,修改默认3306端口,使用SSL加密通道,将传输数据进行加密。

 

到了这里,关于Mysql8.0 安全配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL8配置文件详解

    MySQL 8 是一款常用的关系型数据库管理系统,它提供了全面而强大的功能来满足不同的数据管理需求。为了更好地控制其功能和性能,配置文件是MySQL 8的重要组成部分之一。在此文章中,我们将详细介绍MySQL 8的配置文件。 MySQL 8 的配置文件是一个文本文件,它包含了许多用于

    2024年02月17日
    浏览(52)
  • Mysql8安装教程与配置

                            添加密码       出现报错 MySQL error 1042: Unable to connect to any of the specified MySQL hosts. Failed to connect to MySQL Server 8.0.23 after 10 attempts. Ended configuration step: Starting the server 使用Win+R -- 运行 “services.msc” -- 打开service服务管理器,找到刚才安装mysql的服务名称

    2024年02月13日
    浏览(46)
  • MySQL8.0的下载、安装、配置

    1.1 MySQL四大版本 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于 大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天。提供了更多的 功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高

    2024年02月08日
    浏览(45)
  • MySQL8.0主从部署配置详细步骤

    环境:CentOS7+MySQL8 hostname ip 角色 c7-lab1 10.10.104.51 主 c7-lab2 10.10.104.52 从 一、安装MySQL数据库 1.1、下载mysql8,下载rpm bundle包上传到centos系统上。官网 https://dev.mysql.com/downloads/mysql 或者使用wget命令+链接直接下载 1.2、解压bundle包 1.3、卸载mariadb 1.4、安装MySQL 安按照下面图片的顺序

    2024年01月16日
    浏览(36)
  • Ubuntu服务器配置mysql8

    先更新apt-get apt-get update 安装mysql apt-get install mysql-server-8.0 修改mysql的root密码,ubuntu安装的服务器默认在本机是不需要密码的, 先进入MySQL mysql -uroot -p , 使用mysql数据库 use mysql; , 然后执行 alter user \\\'root\\\'@\\\'localhost\\\' identified by \\\'你的密码\\\'; 最后刷新信息 FLUSH PRIVILEGES; 先进入MySQL mysq

    2024年02月16日
    浏览(49)
  • MySQL8.0.32的安装与配置

    地址:MySQL官网 解压之后的文件里边是没有data文件的,需要创建一个空文件夹命名为data(后面需要用),并且需要创建一个初始化文件,命名为my,后缀名为.ini。my.ini文件以记事本方式打开输入以下配置设置信息 注意: ① 在任务栏的搜索框中输入cmd调出命令提示符,并以管理员

    2024年03月12日
    浏览(47)
  • MySQL8.0安装配置教程【超级详细图解】

    目录 一、MySQL下载与安装 二、MySQL安装 三、MySQL连接测试 四、配置环境变量 MySQL下载地址 mysql-installer-web-community-8.0.26.0.msi 下载程序大小:2.4M;安装时需要联网安装组件; mysql-installer-community-8.0.26.0.msi 下载程序大小:450.7M;安装时离线安装即可;【推荐这个】       第一个

    2024年02月16日
    浏览(48)
  • Linux 下安装配置部署MySql8.0

    MySQL安装包:在官网下载需要的版本,这里我用的版本是 MySQL 8.0.34 https://dev.mysql.com/downloads/mysql/ 本次linux机器使用的是阿里云ECS实例 1. 将安装包上传至服务器 解压到当前文件夹 2. 移动解压后的目录到目标安装目录 3. 文件名太长,改成 mysql-8.0.34 4. 增加用户组 mysql,在用户组

    2024年01月16日
    浏览(44)
  • MySQL8.0.33主从复制配置记录

    官网:https://dev.mysql.com/downloads/mysql/ 在线下载或者下载到本地再上传 准备wget下载工具: 进入MySQL的bin目录 初始化并得到密码 ./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory 报错,缺依赖:::: yum install -y libaio yum -y install numactl 再初始

    2024年02月02日
    浏览(41)
  • MySQL5 和 MySQL8 的配置区别 & 一些注意事项

    先保证你的mysql正在运行,假如用户名是 root ,密码是 123456 ,运行下边的代码可以查看mysql的版本号。 这里我的版本是5.7.19。也就是5版本的。 注意:下边的url区别不用管。看到这就可以了。 当然8版本的后边不写也没事。 不建议在没有服务器身份验证的情况下建立SSL连接。

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包