提高 MySQL/MariaDB 安全性的几个方法

MySQL 是世界上最受欢迎的开源数据库管理系统,而 MariaDB 是 MySQL 的一个分支,是世界上增长最快的开源数据库管理系统。安装 MySQL 服务器后,其默认配置是不安全的,需要对其进行基本的安全配置。

本文中,我们将介绍提升 MySQL/MariaDB 安全性的一些方法。

1. MySQL 安全配置向导

这是安装 MySQL 服务器后需要进行的第一个操作,以提升数据库服务器的安全。该脚本会要求您执行以下操作来提高 MySQL 服务器的安全性:

  • 如果您在安装过程中没有设置密码,请为 root 帐户设置密码。
  • 通过删除可从本地主机外部访问的 root 帐户来禁用远程 root 用户登录。
  • 删除匿名用户帐户和测试数据库,默认情况下所有用户都可以访问,包括匿名用户。
# mysql_secure_installation

运行后,设置 root 密码,输入[ Yes/Y ]回答一系列问题,然后按 [Enter]。

提高 MySQL/MariaDB 安全性的几个方法

2. 将数据库服务器绑定到环回地址

这个配置将限制远程机器的访问,它告诉 MySQL 服务器只接受来自本地主机的连接。您可以在主配置文件中设置它。


# vi /etc/my.cnf [RHEL/CentOS]

# vi /etc/mysql/my.conf [Debian/Ubuntu]

OR
# vi /etc/mysql/mysql.conf.d/mysqld.cnf [Debian/Ubuntu]

在下面的部分下添加以下行

[mysqld]
bind-address = 127.0.0.1

3. 在 MySQL 中禁用 LOCAL INFILE

作为提升安全性的一部分,要禁用 local_infile 以防止在 MySQL 中使用以下指令访问底层文件系统

[mysqld]
local-infile=0

4.更改 MYSQL 默认端口

MySQL 默认端口号是 3306 ,但可以在配置文件的 [mysqld] 部分下更改它,如图所示。

Port=5000

5. 启用 MySQL 日志记录

日志是了解服务器上所发生情况的最佳方式之一,如果 MySQL 被攻击,可以通过查看日志文件,了解攻击发生的具体情况。

[mysqld]

可以通过在该部分下添加以下变量来启用 MySQL 日志记录。

log=/var/log/mysql.log

6. 对 MySQL 文件设置适当的权限

确保为所有 mysql 服务器文件和数据目录设置了适当的权限。/etc/my.conf 文件应该只能由 root 用户写入 。这可以防止其他用户更改数据库服务器配置。

# chmod 644 /etc/my.cnf

7. 删除 MySQL Shell 历史

在 MySQL shell 上执行的所有命令都会被 mysql 客户端存储在历史文件中:~/.mysql_history。这可能很危险,因为您将创建的任何用户帐户,在 shell 上键入的所有用户名和密码都将记录在历史文件中。

# cat /dev/null > ~/.mysql_history

8. 不要从命令行运行 MySQL 命令

如上所述,在终端上执行的所有命令都会存储在历史文件中,具体取决于使用的 shell(例如~/.bash_history用于 bash)。设法访问此历史文件的攻击者可以很容易地看到那里记录的任何密码。

强烈建议不要在命令行输入密码,如下所示:

# mysql -u root -ppassword_
提高 MySQL/MariaDB 安全性的几个方法

当检查命令历史文件的最后一部分时,将看到上面输入的密码。

# history
提高 MySQL/MariaDB 安全性的几个方法

连接 MySQL 的适当方式是。

# mysql -u root -p

Enter password:

9. 为每个应用程序的数据库创建独立用户

对于服务器上运行的每个应用程序,给每个项目的数据库创建一个独立的用户。例如,如果您有一个 wordpress 站点,请为 wordpress 站点数据库创建一个独立用户,如下所示。

# mysql -u root -p

MariaDB [(none)]> CREATE DATABASE osclass_db;

MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> exit;

并记住删除不再管理服务器上任何应用程序数据库的用户帐户。

10. 使用额外的安全插件和库

MySQL 包含许多安全插件,用于验证客户端连接到 mysql 服务器的尝试、密码验证和保护敏感信息的存储,这些都在免费版本中可用。

11.定期更改MySQL密码

这是一条常见的信息安全建议。执行此操作的频率取决于您的内部安全策略。但是,它可以防止可能在很长一段时间内一直尝试访问您的 mysql 服务器的人。

MariaDB [(none)]> USE mysql;

MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';

MariaDB [(none)]> FLUSH PRIVILEGES;

12.定期更新 MySQL 服务器包

强烈建议定期升级 mysql/mariadb 软件包,以跟上供应商存储库中的安全更新和错误修复。

# Centos
yum update  

# Ubuntu
apt update

对 mysql/mariadb 服务器进行任何更改后,请重新启动服务。

# systemctl restart mariadb #RHEL/CentOS

# systemctl restart mysql #Debian/Ubuntu

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/12-ways-to-improve-mysql-security/

(0)
上一篇 2022年4月1日 下午2:31
下一篇 2022年4月2日 上午8:52

相关推荐

发表评论

登录后才能评论