centos7下mysql8.0.29的安装以及开启ssl访问

1 准备工作

  1. 下载mysql组件包,mysql_rpm_.tar.gz 提取码: qdfw
  2. 把包拷贝到linux目录下,这里使用/home/yk(本机CentOS Linux release 7.9.2009 (Core)
  3. 解压缩包,tar -xzvf mysql_rpm.tar.gz
  4. 进入mysql_rpm目录里,cd mysql_rpm
  5. 执行yum localinstall -y *.rpm
  6. 如果遇到下面提示,请删除mariadb:
---> Package mariadb-libs.x86_64 1:5.5.68-1.el7 will be obsoleted  # 安装过程中遇到的提示
删除方法:
rpm -qa|grep mariadb  # 查找
yum remove mariadb-libs  # 删除

2 修改mysql的一些配置信息

  1. 启动服务systemctl start mysqld.service

  2. 查看初始密码grep ‘temporary password’ /var/log/mysqld.log | awk ‘{print$13}’,最好赋值下

    init_password=$(grep 'temporary password' /var/log/mysqld.log | awk '{print$13}')
    
  3. 登录并修改密码为Mysql-new

    mysqladmin -uroot --password=$init_password password Mysql-new1
    
  4. 修改密码策略使之可以设置简单密码

    mysql -u root --password=Mysql-new1 -e "set global validate_password.policy=0;set global validate_password.length=1;"
    
  5. 修改密码为123456

    mysqladmin -uroot --password=Mysql-new1 password 123456
    
    创建数据库并导入数据:
    mysql -u root --password=密码 -e "create database 数据库名;"
    mysql -u root --password=密码 数据库名 < mydata.sql
    

3 指定用户使用ssl连接

选择数据库
mysql> create user 'user'@'%';

创建用户
mysql> grant all on *.* to 'user'@'%';
Query OK, 0 rows affected (0.01 sec)

分配权限
mysql> alter user 'user'@'%' identified by '123456' require ssl;
Query OK, 0 rows affected (0.01 sec)

刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

接下来可以测试下,不带-h会以loacalhost登录,且登录不了,因为创建的用户是'user'@'%',想要本地登录还要创建'user'@'localhost'
cd /var/lib/mysql
mysql -uuser -p123456 -h0.0.0.0 --ssl-cert=./client-cert.pem --ssl-key=./client-key.pem

4 gorm使用ssl连接mysql

import (
	"crypto/tls"
	"crypto/x509"
	"time"

	dMsql "github.com/go-sql-driver/mysql"
	"github.com/pkg/errors"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

func createTLSConf() tls.Config {
	rootCertPool := x509.NewCertPool()
	clientCert := make([]tls.Certificate, 0, 1)
	
	# 这个证书可以从mysql服务器的/var/lib/mysql目录下里拷贝出来
	certs, err := tls.LoadX509KeyPair("cert/mysql_cert/client-cert.pem", "cert/mysql_cert/client-key.pem")  
	if err != nil {
		logger.Log.Fatal().Err(err).Msg("初始化gorm失败,程序退出")
	}
	clientCert = append(clientCert, certs)
	return tls.Config{
		RootCAs:            rootCertPool,
		Certificates:       clientCert,
		InsecureSkipVerify: true, // needed for self signed certs
	}
}

func InitGorm(dbDSN string, opts ...gorm.Option) (*gorm.DB, error) {
	tlsConf := createTLSConf()
	err := dMsql.RegisterTLSConfig("custom", &tlsConf)
	if err != nil {
		logger.Log.Fatal().Err(err).Msg("初始化gorm失败,程序退出")
	}

	db, err := gorm.Open(mysql.Open(dbDSN), opts...)
	if err != nil {
		return nil, err
	}
	rawDb, err := db.DB()
	if err != nil {
		return nil, err
	}

	rawDb.SetMaxIdleConns(defaultMaxIDleConnections)
	rawDb.SetMaxOpenConns(defaultMaxOpenConnection)
	rawDb.SetConnMaxLifetime(defaultMaxLifeTime)
	return db, nil

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值