目录结构

  • 前言
  • 查看是否已安装mariadb,若是已安装,需要卸载
  • 下载MySql源码包并解压
  • 安装编译所需要的工具和库
  • 创建mysql的安装目录及数据库存放目录
  • 进到mysql-5.7.29源码目录,编译安装
  • 创建本地连接套接字文件
  • 设置自定义配置文件
  • 初始化数据库
  • 拷贝启动脚本、启动服务、登录数据库(没有密码)
  • 启动配置密码和允许远程访问
  • 自定义启动方式(加载自定义配置文件)
  • 参考连接


前言

java程序国产服务器适配,配置mysql环境;

服务器:Linux uos123-PC 4.19.0-loongson-3-desktop #5322 SMP Mon Oct 10 14:21:36 CST 2022 mips64 GNU/Linux

国产操作系统安装docker 国产操作系统安装MySQL_mysql

查看是否已安装mariadb,若是已安装,需要卸载

# 检测是否存在mariadb
rpm -qa|grep mariadb
# 存在则卸载(小编未检测到mariadb,以下命令未验证)
# 如果无法删除可以 执行yum remove 具体的包名
yum remove mariadb

下载MySql源码包并解压

小编此处是命令行卸载,如无wget环境,也可到官网下载不同版本源码包,然后上传指定目录进行解压

# 下载mysql-5.7.29.tar.gz源码包
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29.tar.gz 
# 解压源码包
tar -zxvf mysql-5.7.29.tar.gz

安装编译所需要的工具和库

# 安装编译所需要的工具和库
apt-get install make cmake gcc g++ bison libncurses5-dev build-essential

创建mysql的安装目录及数据库存放目录

# 创建mysql安装目录
mkdir -p /usr/local/mysql  
# 创建mysql数据存放目录             
mkdir -p /usr/local/mysql/data
# 创建mysql组
groupadd mysql 
# 创建Mysql用户,同时属于mysql组
useradd -g mysql mysql
# 设置目录权限
chown -R root:mysql  /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data

进到mysql-5.7.29源码目录,编译安装

make和makeinstall,编译安装过程需很长一段时间,确保此过程电脑一直待机,耐心等待!

# 预编译
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DMYSQL_DATADIR=/usr/local/mysql/data 
-DSYSCONFDIR=/etc  
-DDOWNLOAD_BOOST=1 
-DWITH_BOOST=/root/mysql-5.7.24/include/boost_1_59_0 
-DWITHOUT_PARTITION_STORAGE_ENGINE=0 
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
# 编译安装(make && make install,也可这样写,小编未成功!分开整理如下)
make
make install
  • DCMAKE_INSTALL_PREFIX:MySQL安装目录
  • DMYSQL_DATADIR:MySQL数据目录,初始时为空
  • DSYSCONFDIR:配置文件目录
  • DDOWNLOAD_BOOST:取值0或1,是否下载Boost库
  • DWITH_BOOST:若不下载Boost库的话,是本地Boost库的位置,若下载Boost表示下载位置
  • DDEFAULT_CHARSET:指定默认字符集为utf8mb4,因为历史遗留问题,MySQL中的utf8不是真正的utf8,而是阉割版的,最长只有三个字节,当遇到四个字节的utf8编码时,会导致存储异常。从5.5.3开始,使用utf8mb4实现完整的utf8。
  • DDEFAULT_COLLATION:排序规则,默认为utf8mb4_0900_ai_ci,属于utf8mb4_unicode_ci的一种。0900指的是Unicode校对算法版本,ai是指口音不敏感(as表示敏感),ci指不区分大小写(cs表示区分)。utf8mb4_unicode_ci表示基于标准的的Unicode来排序和比较,能够在各种语言之间精确排序,而utf8mb4_general_ci遇到某些特殊的字符集时排序结果可能不一致,准确性较差,但是性能较好,比较和排序时候更快。
  • DWITH_EXTRA_CHARSETS:安装所有字符集

编译安装后的目录(etc和var小编后续添加,此环节可忽略)

国产操作系统安装docker 国产操作系统安装MySQL_mips64_02

创建本地连接套接字文件

在主程序目录(/usr/local/mysql)创建“var/mysql.sock”

  • TCP/IP(常用)
  • mysql -h 192.168.1.108 -uroot -p
  • socket
  • 在速度上比用tcp的方式更快,但只适用于mysql和应用同在一台PC上,依靠本地的.sock文件。如果不在同一台PC上,就没有办法连接了。
  • mysql.sock,其作用是程序与MySQL Server处于同一台机器,发起本地连接时可用。
  • 无须定义连接host的具体IP得,只要为空或localhost就可以。 在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。 因为在my.ini中或my.cnf中改变端口后,mysql.sock是随每一次 mysql server启动生成的。已经根据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更。

设置自定义配置文件

在主程序目录(/usr/local/mysql)创建“etc\my.cnf”配置文件

[client]
port        = 18890
socket      = /usr/local/mysql/var/mysql.sock
[mysqld]
bind-address  = 0.0.0.0
port = 18890
user = root
socket      =  /usr/local/mysql/var/mysql.sock

lower_case_table_names 	= 1
character-set-server=utf8
default-storage-engine=INNODB
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
query_cache_size= 0 
tmp_table_size=35M
thread_cache_size= 8 
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=69M
key_buffer_size=55M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
# wait_timeout=50
innodb_flush_log_at_trx_commit = 0 
innodb_log_buffer_size=2M
innodb_buffer_pool_size=107M
innodb_log_file_size=54M
innodb_thread_concurrency=10
max_allowed_packet=100M

初始化数据库

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lower-case-table-names=1

拷贝启动脚本、启动服务、登录数据库(没有密码)

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

启动配置密码和允许远程访问

# 登录数据库,然后回车(此时没有密码)
mysql -uroot -p
# 设置密码
ALTER USER'root'@'localhost' IDENTIFIED BY 'password';
# 开启远程访问
create user 'root'@'%' identified by 'password';
#刷新
flush privileges;

自定义启动方式(加载自定义配置文件)

  • 编写启动服务“zkmysql.service”
[Unit]
Description=Mysql 5.7
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/etc/my.cnf --user=root
ExecStop=killall mysqld >/dev/null 2>&1 &
[Install]
WantedBy=multi-user.target
  • 启动服务
systemctl start zkmysql

国产操作系统安装docker 国产操作系统安装MySQL_mysql_03

  • 停止服务
systemctl stop zkmysql

国产操作系统安装docker 国产操作系统安装MySQL_loongson_04

国产操作系统安装docker 国产操作系统安装MySQL_loongson_05