MySQL编译安装

MySQL 5.7 安装

MySQL 8.0 安装

选择MySQL版本

访问地址

下载

1
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz

创建用户和用户组

1
2
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

创建安装目录

1
/data04/software/mysql8/

解压

1
2
xz -d mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar

将二进制代码复制到目录中

1
cp -r mysql-8.0.28-linux-glibc2.12-x86_64/* software/mysql8/ 

创建配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim software/mysql8/my.cnf

[mysqld]
user=mysql
port=3306
#data 目录
datadir=/data04/software/mysql8/data/
character-set-server=utf8
max_connections = 1000
#最大连接数
group_concat_max_len = 102400

#忽略表名大小写
lower_case_table_names = 0
log_bin_trust_function_creators=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
transaction_isolation = READ-COMMITTED
open-files-limit = 65535

设置目录权限

1
chown -R mysql:mysql mysql8

初始化

1
bin/mysqld --defaults-file=/data/software/mysql8/my.cnf --initialize --user=mysql --basedir=/data/software/mysql8 --datadir=/data/software/mysql8/data/

初始密码

1
2
3
4
5
6
7
8
9
10
2022-06-19T06:19:31.754493Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2022-06-19T06:19:31.754696Z 0 [System] [MY-013169] [Server] /data04/software/mysql8/bin/mysqld (mysqld 8.0.28) initializing of server in progress as process 7307
2022-06-19T06:19:31.754814Z 0 [Warning] [MY-010339] [Server] Using pre 5.5 semantics to load error messages from /data04/software/mysql8/main/share/. If this is not intended, refer to the documentation for valid usage of --lc-messages-dir and --language parameters.
2022-06-19T06:19:31.756081Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2022-06-19T06:19:31.782653Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-06-19T06:19:33.382627Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-06-19T06:19:35.305511Z 0 [Warning] [MY-013829] [Server] Missing data directory for ICU regular expressions: /data04/software/mysql8/main/lib/private/.
2022-06-19T06:19:37.978389Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: gBMaTy*tp3/F
2022-06-19T08:30:05.735310Z 1 [Note] A temporary password is generated for root@localhost: dpS.gSM<t2l5

安装加密算法

1
bin/mysql_ssl_rsa_setup --datadir /data/software/mysql8/data/

配置启动

1
cp support-files/mysql.server /etc/init.d/mysqld8

配置默认目录

1
2
3
4
vim /etc/init.d/mysqld5

basedir=/data/software/mysql5/
datadir=/data/software/mysql5/data/

配置启动需要的目录

mkdir /var/log/mariadb/
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
chown -R mysql:mysql /var/log/mariadb

配置开机启动

1
2
3
4
vim /etc/rc.local

touch /var/lock/subsys/local
/etc/init.d/mysqld5 start

启动

1
service mysqld8 start

登陆 MySQL

1
bin/mysql -uroot -p

修改初始密码

1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

开启远程访问

1
2
3
update mysql.user set host='%' where user='root';
update user set Host = '%' where User='root';
flush privileges;

配置开机启动

1
2
vim /etc/rc.local
service mysqld8 start

msyql socket 文件变化时候

1
mysql -uroot -p -S /data/logs/mysql8/mysql.sock

异常

问题1

1
2
3
2022-06-19T07:16:11.621198Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('1').
2022-06-19T07:16:11.621990Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2022-06-19T07:16:11.622467Z 0 [ERROR] [MY-010119] [Server] Aborting

解决方案

在 etc/my.cnf中调整 lower_case_table_names 参数为1,在 8.0 中,若是配置错误了,需要重新初始化

问题2

1
./bin/mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

解决方案

ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

问题3

描述

centos stream 8 自定义安装 MySQL 8 自己指定的配置文件 没有被引用。修改端口等参数,重启后无效。

原因

网上会说默认配置文件 为 /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 这些,但是自定义安装指定配置文件不在这些目录上。mysql 则会默认读取 安装目录下的 my.cnf。

1
2
3
4
5
extra_args=""
if test -r "$basedir/my.cnf"
then
extra_args="-e $basedir/my.cnf"
fi

解决

如果你安装多个 mysql的话,需要吧配置文件放在 安装的 mysql 的根目录下。

Author: suce
Link: https://haoubox.cn/2022/06/19/MySQL编译安装/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.