Linux技术学习,教你玩儿转MySQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux技术学习,教你玩儿转MySQL相关的知识,希望对你有一定的参考价值。

这是安装 mysql 服务器后头一个建议的步骤,用于保护数据库服务器。这个脚本可以帮助您提高 MySQL 服务器的安全性:

· 如果您在安装期间没有设置 root 帐户的密码,马上设置它

· 用删除可从本地主机外部访问的 root 帐户来禁用远程 root 用户登录

· 删除匿名用户帐户和测试数据库,默认情况下,所有用户、甚至匿名用户都可以访问这些帐户和测试数据库

mysql_secure_installation

在运行上述命令之后,设置 root 密码并依靠输入 [Yes/Y] 和按下 [Enter] 键来回答一系列问题。

  1. 将数据库服务器绑定到 Loopback 地址

此配置将限制来自远程机器的访问,它告诉 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

  1. 禁用 MySQL 的 LOCAL INFILE

作为安全性增强的一部分,您需要禁用local_infile,使用下面的指令以防止在 [mysqld]部分从 MySQL 中访问底层文件系统。

local-infile=0

  1. 修改 MySQL 的默认端口

设置端口变量用于监听 TCP/IP 连接的 MySQL 端口号。默认端口号是 3306,但是您可以在[mysqld]中修改它。

Port=5000

5、启用 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

  1. 不要在命令行中运行 MySQL 命令

正如你所知道的,你在终端上输入的所有命令都会被存储在一个历史文件中,具体取决于你正在使用的shell(例如 bash 的 shell 历史文件放在~/.bash_history)。攻击者访问这个历史文件可以很容易地看到记录在那里的任何密码。

非常不建议在命令行里面输入密码,如下:

mysql -u root -ppassword_

img 使用密码连接 MySQL

当你查看命令行历史文件的末尾部分时,可以看到之前输入过的密码。

history

img 查看命令行输入历史

推荐连接 MySQL 的方式是

mysql -u root -p

Enter password:

  1. 定义特定应用的数据库用户

对于每一个在服务器上运行的应用,只设置一个与该应用相关的数据库用户。例如你有一个 wordpress 网站,如下创建一个 wordpress 的数据库用户:

mysql -u root -p

MariaDB [(none)]> CREATE DATABASE osclass_db;

MariaDB [(none)]> CREATE USER ‘osclassdmin‘@‘localhost‘ IDENTIFIED BY ‘[email protected]%!2‘;

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

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> exit

并且要记住对于不再使用的数据库用户要删掉。

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

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;

  1. 定期更新 MySQL Server 包

强烈建议定期从官方仓库更新 mysql/mariadb 包来获取全新的安全更新和错误改进。通常情况下操作系统中默认的包是过时的。

yum update

apt update

在对 mysql/mariadb server 进行任何修改之后,要重启服务。

systemctl restart mariadb #RHEL/CentOS

systemctl restart mysql #Debian/Ubuntu

以上是关于Linux技术学习,教你玩儿转MySQL的主要内容,如果未能解决你的问题,请参考以下文章

一文玩儿转 Rancher Desktop

Pytthon实战------黑白老照片上色,手把手教你用Python怎么玩儿!

手把手教你Linux玩转Oracle数据库,哎,就是玩儿

怎样在 Ubuntu Linux 上安装 MySQL

玩儿转双语阅读 | NO.105 Marvin wanted more 马文还想吃

带你玩儿转 “中国汉字”,实力不够,Python来凑!