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

介绍

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

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

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

安装 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

注意:在生产中,始终使用更安全和“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

检查MySQL状态如上所述:

mysql> STATUS
--------------
mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper

Connection id: 3
Current database: 
Current user: root@localhost
SSL: Cipher in use is DHE-RSA-AES256-SHA
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 32 sec

Threads: 1 Questions: 6 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.065
现在启用,连接通过它进行保护。

启用远程连接

编辑MySQL配置文件:

# $EDITOR /etc/my.cnf

在[mysqld]部分的末尾粘贴以下行:

bind-address = *
require_secure_transport = ON

保存,退出并重启MySQL。

# systemctl restart mysqld

为远程连接创建新用户

此时,SSL和远程连接已启用。 接下来要做的是创建一个新的MySQL用户:

# mysql -u root -p

创建一个新用户:

mysql> CREATE USER 'gmolica'@'%' IDENTIFIED BY 'Unixmen1!' REQUIRE X509;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'gmolica'@'%' IDENTIFIED BY 'Unixmen1!' REQUIRE X509;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

总结

通过上一步,我们已经为MySQL配置好了。 现在,可以使用创建的凭据远程登录数据库系统。 当然,客户端必须具有证书副本才能通过SSL连接。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/221504.html<

(0)
运维的头像运维
上一篇2025-04-15 01:44
下一篇 2025-04-15 01:45

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注