CentOS 7上安装MySQL并配置远程安全连接

MySQL是由Oracle公司开发的开源SQL数据库管理系统。

SQL代表结构化查询语言,它是用于访问数据库的标准化语言。 当前版本的语言遵循SQL:2003标准。

MySQL是一个关系数据库管理系统(RDBMS)。 这意味着数据库将数据存储在单独的表中,结构被组织成为速度优化的物理文件。 用户使用SQL来设置管理不同数据字段之间关系的规则。

在本教程中,我们将讨论如何在CentOS 7环境中安装MySQL并配置安全的远程连接。

安装 MySQL

最新稳定的MySQL版本是5.7,所以这是我们将在本教程中安装和配置的版本。该包是您需要添加的第一件事,它在MySQL存储库中可用。 执行以下命令开始:

# yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

该命令将添加可以用于安装数据库系统的MySQL存储库:

# yum install -y mysql-community-server

在安装过程结束时,使用systemd工具启动MySQL:

# systemctl start mysqld

检查MySQL状态:

mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) ...

MySQL可以通过执行netstat工具看到3306端口,

# netstat -plntu | grep mysql tcp6 0 0 :::3306 :::* LISTEN 8776/mysqld MySQL配置

在MySQL服务器的初始启动时,将创建一个超级用户帐户('root'@'localhost),并将默认密码设置并存储在错误日志文件中。 通过执行以下命令显示此密码:

# grep 'temporary password' /var/log/mysqld.log

输出为:

[Note] A temporary password is generated for root@localhost: en>_g6syXIXq

第一步是更改root密码。

登录到MySQL shell:

# mysql -u root -p

输入使用上一个命令显示的自动生成的密码。

接下来,使用以下查询更改密码:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'RootStrongPassword1!';

刷新权限并退出:

mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> EXIT; Bye 为MySQL启用SSL

默认情况下,MySQL有自己的SSL证书,存储在/var/lib/mysql中。 为了本教程的目的,这些证书是足够好的。

注意:在生产中,始终使用更安全和“personal”的证书。

从MySQL shell检查SSL。

# mysql -u root -p mysql> SHOW GLOBAL VARIABLES LIKE '%ssl%'; +---------------+-----------------+ | Variable_name | Value          | +---------------+-----------------+ | have_openssl  | YES            | | have_ssl      | YES            | | ssl_ca        | ca.pem          | | ssl_capath    |                | | ssl_cert      | server-cert.pem | | ssl_cipher    |                | | ssl_crl      |                | | ssl_crlpath  |                | | ssl_key      | server-key.pem  | +---------------+-----------------+ 9 rows in set (0.01 sec)

检查SSL状态:

mysql> STATUS; -------------- mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper Connection id: 4 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.18 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 27 min 25 sec Threads: 1 Questions: 12 Slow queries: 0 Opens: 113 Flush tables: 1 Open tables: 106 Queries per second avg: 0.007 --------------

如您所见,SSL没有被使用。 所以,下一步是启用它。

在MySQL配置文件中启用SSL 编辑MySQL配置文件: # $EDITOR /etc/my.cnf

在[mysqld]部分,粘贴以下内容:

ssl-ca=/var/lib/mysql/ca.pem ssl-cert=/var/lib/mysql/server-cert.pem ssl-key=/var/lib/mysql/server-key.pem

保存,退出并重启MySQL服务。

# systemctl restart mysqld

再次检查MySQL shell中的SSL状态。

# mysql -u root -p mysql> STATUS; mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper Connection id: 5 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.18 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 1 min 2 sec Threads: 1 Questions: 6 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.096 启用客户端

此时尚未使用SSL。 这是因为我们需要通过SSL强制所有的客户端连接。 所以,退出MySQL shell并再次编辑my.cnf文件。

# $EDITOR /etc/my.cnf

在文件末尾粘贴以下内容:

[client] ssl-ca=/var/lib/mysql/ca.pem ssl-cert=/var/lib/mysql/client-cert.pem ssl-key=/var/lib/mysql/client-key.pem

再次保存,退出并重新启动MySQL:

# systemctl restart mysqld

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bbcf39ea2c5c102e3d8c0a303a4cd5ef.html