当前位置:   article > 正文

arm mysql服务器_华为云鲲鹏arm服务器配置MySQL服务(5.7)及开启ssl链接

华为鲲鹏uos server离线安装mysql5.7

华为云鲲鹏arm服务器配置MySQL服务(5.7)及开启ssl链接

配置MySQL5.7

首先,我们尝试了部署MySQL8.0,首先是用源码编译安装,编译了两个小时,进度到了约90%左右报了一个错,由于错误提升过于简单,网上搜索找不到解决方案;后来我们又参考鲲鹏centos7上超快速安装mysql8(5分钟搞定)_鲲鹏论坛_华为云论坛 (huaweicloud.com)使用华为源打包好的mysql8的相关rpm包,然而,即使我们使用了

rpm -ivh name.rpm --nodeps --force

忽略依赖问题强制安装,在运行时出现了如下报错信息:

mysql: error while loading shared libraries: libssl.so.

上网查阅资料并检查OpenSSL的版本,我们得出一个结论:鲲鹏的OpenSSL版本是1.0.4,而MySQL依赖的是更高版本的OpenSSL。我们要么编译安装更高版本的openssl,要么退回更低更低版本的MySQL;此外,根据华为云官方的说法,在鲲鹏的centos上能稳定的MySQL是MySQL5.7,考虑服务的稳定性,我们选择了MySQL版本降级

添加mysql用户组和mysql用户,用以隔离mysql进程

groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

安装依赖库

yum install -y libaio

下载解压MySQL

wget https://obs-mirror-ftp4.obs.cn-north-4.myhuaweicloud.com/database/mysql-5.7.27-aarch64.tar.gz

tar xvf mysql-5.7.27-aarch64.tar.gz -C /usr/local/

配置MySQL

mv /usr/local/mysql-5.7.27-aarch64 /usr/local/mysql

mkdir -p /usr/local/mysql/logs

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /dev/shm

ln -sf /usr/local/mysql/my.cnf /etc/my.cnf

cp -rf /usr/local/mysql/extra/lib* /usr/lib64/

mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.old

ln -s /usr/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6

# 设置开机启动

cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

systemctl enable mysqld

添加环境变量

vim /etc/profile

#文件末插入以下两行

export MYSQL_HOME=/usr/local/mysql

export PATH=$PATH:$MYSQL_HOME/bin

source /etc/profile

初始化启动MySQL:无密码初始化登录

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

systemctl start mysqld

systemctl status mysqld

进入MySQL,设置密码:

SET PASSWORD = password("rootpwd");

登录验证

mysql -u root -p

be073a9b14b3b59bddad378acb74b804.png

由于MySQL5.7默认没有开启SSL,需要手动配置开启

配置MySQL5.7开启SSL

输入以下内容显示SSL/TLS的状态

bf62640313e929ab74080039f190dc0f.png

表示当前mysql拥有ssl的功能,但是ssl功能未默认启动

确认当前的链接状态

850edf59de1ed9c4363d472e06dcfb12.png

SSL:Not in use也说明当前连接没有使用SSL

生成SSL/TLS证书和密钥

使用mysql_ssl_rsa_setup生成相关的请求文件和证书对,用--uid让mysql有权限使用

ef5228274132ffe2adb41069f06314d3.png

找到证书默认存储位置/usr/local/mysql/data

09d07cf78c881689ea89d351fc59a0f4.png

检查生成的证书:

dc52b5c9c286c7c4c3163b63062e4e8e.png

在MySQL服务器上启用SSL连接

MySQL将在服务器启动时在MySQL数据目录中查找相应的证书文件。 因此,我们实际上不需要修改MySQL配置来启用SSL,重启服务即可。

systemctl restart mysql

再次连接MySQL,将自动尝试SSL连接

mysql -u root -p -h 127.0.0.1

检查SSL相关变量的值:

adb057806b748b8a96c686111b4770aa.png

上面显示说明正确启动了SSL功能,再次检查连接详细信息:

52d1d63883bc5d6630ed1509334dfa7f.png

此时,我们访问服务器使用了DHE-RSA-AES256-SHA的SSL协议

目前,MySQL服务器配置为接受来自客户端的SSL连接。 但是,如果客户端请求,它仍然允许未加密的连接。

我们可以通过打开require_secure_transport选项来解决这个问题。 这需要所有连接都使用SSL或本地Unix套接字。 由于只能从服务器本身访问Unix套接字,因此对远程用户开放的唯一连接选项将使用SSL。

MySQL创建数据库,并允许远程访问

目标:创建名为“filetransfer“的数据库,新建表user,含有三个字段:id、username、password。

create table `user`(

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

#无符号整形,不许为空,自增以实现全局唯一

`username` varchar(255) COLLATE utf8_bin NOT NULL,

#用户名,可变长字符串,区分大小写,不能为空

#注意utf8每个汉字3字节

`password` varchar(255) COLLATE utf8_bin NOT NULL,

#密码,可变长字符串,区分大小写,不能为空

PRIMARY KEY(`id`) #id为主键

)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;

考虑公文传输系统的使用人数较少,主键id的生成可以不用使用UUID,snowflake等复杂的实现方法。MySQL的id生成策略 - OUYM - 博客园 (cnblogs.com)

执行结果:

059606a74c82297efda1c3d083cedd4d.png

向表中插入两条记录测试用

insert into user(username,password) values ('root','pwd');

insert into user(username,password) values ('123','pwd');

使用华为源提供的包安装的MySQL的配置文件中bind-address默认就是0.0.0.0,监听全部接口。

# 授权远程用户登录 %表示任意地址,也可以指定IP,这里我们允许任意地址,在防火墙里设置入站规则解决

grant all privileges on *.* to root@'%' identified by 'your_root_password';

# 重载授权表

flush privileges;

exit;

重启MySQL。

service mysql restart

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号