mysql非对称秘钥

说明:从安装开始,完整的关于数据库使用RSA认证文档

1 安装

准备:

安装目录:/data/mysql
源码包目录:/data/soft/mysql-8.0.12.tar.gz
解压缩:
shell server> cd /data/soft
shell server> tar xf mysql-8.0.12.tar.gz
shell server> mv mysql-8.0.12 mysql

配置参数文件:

shell server> cd /data/soft/mysql
shell server> vim cmake.sh
cmake . \
-DCMAKE_INSTALL_PREFIX=/data/mysql \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql/mysql \
-DSYSCONFDIR=/data/mysql/etc \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local \
-DWITH_DEBUG=1 \
-DWITH_SSL=system    #使用openSSL加密

写入配置文件:

shell server> yum instal cmake openssl-devel ncurses-devel 
shell server> sh -x cmake.sh

编译安装:

shell server> make && make install

2 初始化

创建用户:

shell server> groupadd mysql
shell server> useradd mysql -s /bin/false -g mysql -r

MySQL配置文件:

shell server> cd /data/mysql
shell server> mkdir etc log
shell server> cd etc
shell server> vim my.cnf
[mysqld]
datadir=/data/mysql/data
basedir=/data/mysql/
socket=/data/mysql/log/mysql.sock

symbolic-links=0
[mysqld_safe]
log-error=/data/mysql/log/mysql-error.log
pid-file=/data/mysql/log/mysql.pid

!includedir /etc/my.cnf.d

初始化:

shell server> chown mysql. -R /data/mysql/
shell server> cd /data/mysql
shell server> bin/mysqld --initialize --user=mysql
2018-09-26T06:04:58.110546Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2018-09-26T06:04:58.110673Z 0 [System] [MY-013169] [Server] /data/mysql/bin/mysqld (mysqld 8.0.12-debug) initializing of server in progress as process 46039
2018-09-26T06:05:03.119182Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: d59,BqrKOiGP
2018-09-26T06:05:11.129668Z 0 [System] [MY-013170] [Server] /data/mysql/bin/mysqld (mysqld 8.0.12-debug) initializing of server has completed

启动数据库:

shell server> cp /data/mysql/support-files/mysql.server /etc/init.d/
shell server> mkdir /data/mysql/data /data/mysql/log
shell server> touch /data/mysql/log/mysql-error.log
shell server> /etc/init.d/mysql.server start

更新root初始密码:

shell server> ln -sf /data/mysql/bin/mysql /usr/bin
shell server> mysql -uroot -pd59,BqrKOiGP
mysql server > UPDATE USER 'root'@'localhost' IDENTIFIED BY '123';

注意:数据库启动之后会自动在数据目录下创建认证文件。目录在/data/mysql/data

3 测试

创建测试用户

mysql server> create user 'x509'@'%' require x509;
mysql server> create user 'test'@'%' ;

拷贝服务器数据目录下的客户端认证文件:

shell server> scp /data/mysql/data/ca.pem 10.0.0.4:/data/test
shell server> scp /data/mysql/data/client-cert.pem 10.0.0.4:/data/test
shell server> scp /data/mysql/data/client-key.pem 10.0.0.4:/data/test
shell server> scp /data/mysql/bin/mysql 10.0.0.4:/data/test

从客户端进行连接测试:

shell client> cd /data/test
shell client> ln -sf /data/test/mysql /usr/bin/
shell client> mysql -utest -h10.0.0.138
#登录成功
shell client> mysql -ux509 -h10.0.0.138
#登录失败
shell client> mysql -u509 -h10.0.0.138 --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
#登录成功

注意:使用rsa认证登录大概有以下几点需要注意:

  1. 配置编译时需要加上参数-DWITH_SSL=system,如果没有加次参数,使用SSL连接报错如下:
shell cilent> ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed
  1. 创建用户需要添加认证方式,用户认证方式:官网链接
    本例中使用的认证方式x509,要求客户端提供有效证书。

  2. 客户端连接数据库服务器端必须使用配置编译时添加了此参数-DWITH_SSL=system的连接命令,如:mysql、mysqldump等

遗留问题

  1. server端秘钥对用途
  2. 不同用户使用不同秘钥对如何实现
  3. MySQL8.0的认证方式sha256_password与以往版本认证方式mysql_native_password对数据库的影响
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值