CentOS7.9配置mysql开启ssl

参考文献:
MySQL5.7开启SSL
MySQL :: MySQL 5.7 Reference Manual :: 6.3.1 Configuring MySQL to Use Encrypted Connections

一、生成证书文件

可通过下述命令生成证书文件。对于使用 OpenSSL 编译的 MySQL 发行版,服务器可以在启动时自动在数据目录中生成这些文件,如果已经有了可跳过这一步。

[root@localhost mysql]bin/mysql_ssl_rsa_setup --datadir=/var/lib/mysql/
[root@localhost mysql]chown mysql:mysql /var/lib/mysql -R 

二、修改配置文件

修改mysql的配置文件,增加ssl相关配置

[root@localhost mysql]vi /etc/my.cnf
[root@localhost mysql]# cat /etc/my.cnf|grep ssl
# ssl
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem

三、重启数据库

[root@localhost mysql]systemctl restart mysqld

四、查看数据库中ssl状态

mysql> show global variables like '%ssl%';
+-------------------------------------+--------------------------------+
| Variable_name                       | Value                          |
+-------------------------------------+--------------------------------+
| have_openssl                        | YES                            |
| have_ssl                            | YES                            |
| performance_schema_show_processlist | OFF                            |
| ssl_ca                              | /var/lib/mysql/ca.pem          |
| ssl_capath                          |                                |
| ssl_cert                            | /var/lib/mysql/server-cert.pem |
| ssl_cipher                          |                                |
| ssl_crl                             |                                |
| ssl_crlpath                         |                                |
| ssl_key                             | /var/lib/mysql/server-key.pem  |
+-------------------------------------+--------------------------------+
10 rows in set (0.00 sec)

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.40, for Linux (x86_64) using  EditLine wrapper

Connection id:		2
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.40-log 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:			20 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 110  Flush tables: 1  Open tables: 103  Queries per second avg: 0.300
--------------

五、创建ssl登录账号

mysql> create user 'ssl_user'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to 'ssl_user'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

六、登录测试

[root@localhost mysql]# mysql -ussl_user -pDF*c3000 --ssl-mode=required
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.40-log MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

You are enforcing ssl conection via unix socket. Please consider
switching ssl off as it does not make connection via unix socket
any more secure.
mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.40, for Linux (x86_64) using  EditLine wrapper

Connection id:		16
Current database:	
Current user:		ssl_user@localhost
SSL:			Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.40-log 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:			29 min 10 sec

Threads: 5  Questions: 135  Slow queries: 0  Opens: 117  Flush tables: 1  Open tables: 110  Queries per second avg: 0.077
--------------

可通过下述命令查看ssl版本

mysql> show session status like 'ssl_version';
+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| Ssl_version   | TLSv1.2 |
+---------------+---------+
1 row in set (0.00 sec)
### 编译并安装 MySQL 5.6 #### 准备工作 为了确保环境适合编译和安装 MySQL 5.6,在开始之前需要更新系统软件包到最新版本[^2]。 ```bash sudo yum update -y ``` 接着,安装一些必要的开发工具和依赖项来支持后续的编译过程: ```bash sudo yum groupinstall "Development Tools" -y sudo yum install cmake ncurses-devel bison openssl-devel perl wget -y ``` 对于特定于 MySQL 的构建需求,还需要额外安装 SCL 工具集以便更好地管理不同版本间的兼容性问题[^4]: ```bash sudo yum install centos-release-scl scl-utils-build -y ``` #### 下载源码 前往官方下载页面获取对应版本的 MySQL 源代码压缩文件。这里假设已经找到了适用于 CentOS 7.x 平台下的 tarball 文件 `mysql-5.6.xx.tar.gz`: ```bash cd /usr/local/src/ wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.48.tar.gz tar zxvf mysql-5.6.48.tar.gz cd mysql-5.6.48 ``` 注意:实际操作时应替换为最新的稳定版号。 #### 构建与安装 创建一个新的用户用于运行 mysqld 进程,并设置合适的权限给数据目录 `/var/lib/mysql` 和日志路径 `/var/log/mysqld.log` : ```bash groupadd mysql useradd -r -g mysql mysql mkdir -p /data/mysql/{data,tmp} chown -R mysql:mysql /data/mysql chmod 750 /data/mysql touch /var/log/mysqld.log chown mysql:mysql /var/log/mysqld.log ``` 使用 CMake 来配置编译选项,指定安装位置和其他参数。此步骤非常重要因为它决定了最终生成的应用程序的行为特性: ```bash cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DEXTRA_CHARSETS=all \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=bundled \ -DWITH_ZLIB=bundled \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/src/mysql-5.6.48/boost ``` 执行上述命令后等待其完成初始化检查;如果一切正常,则可以继续进行编译链接阶段: ```bash make && make install ``` #### 初始化数据库实例 首次启动前需先初始化默认的数据表结构体及其他必要资源: ```bash /usr/local/mysql/scripts/mysql_install_db --user=mysql ``` #### 设置服务脚本 为了让 MySQL 能够随操作系统自动启停,还需复制提供的 init.d 启动脚本至相应的位置,并调整其中涉及的服务名及路径变量以匹配当前部署情况: ```bash cp support-files/mysql.server /etc/init.d/mysqld sed -i 's/^basedir=$/basedir=\/usr\/local\/mysql/' /etc/init.d/mysqld sed -i 's/^datadir=$/datadir=\/data\/mysql\/data/' /etc/init.d/mysqld chkconfig --add mysqld service mysqld start ``` 最后一步就是验证新安装的服务状态是否健康在线: ```bash netstat -tlnp | grep :3306 ps aux|grep mysqld_safe ``` 以上即完成了基于源码方式在 CentOS 7.9 上手动编译安装 MySQL 5.6 的全过程描述[^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值