0%

源码安装mysql

源码安装Mysql

系统: CentOS 8

1. 下载

官网找指定版本下载源码包

https://downloads.mysql.com/archives/community/

1
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.34.tar.gz

2. 解压编译

1
2
3
4
5
6
7
8
9
10
11

# 解压
tar -zvxf mysql-boost-5.7.34.tar.gz
cd mysql-5.7.34

# 安装cmake
yum install cmake

# 编译
cmake .

编译时命令 cmake . 报错汇总

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 报错: undefined symbol: archive_write_add_filter_zstd
yum install libarchive

# 报错: No CMAKE_CXX_COMPILER could be found.
yum install gcc-c++

# 报错: CMake Error at cmake/boost.cmake:88, 根据提示命令增加额外安装boost目录
# (也可自行下载安装Boost C++ 下载地址: https://sourceforge.net/projects/boost/files/boost/)
# 注意 只能是1.59.0版本的boost
mkdir -p /usr/local/boost

cmake -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost .
#
cd /usr/local/boost
wget https://udomain.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar -zvxf boost_1_59_0.tar.gz
cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost/boost_1_59_0

# 报错: CMake Error at cmake/ssl.cmake:63 (MESSAGE): Please install the appropriate openssl developer package
gg


二进制安装

1. 下载

https://downloads.mysql.com/archives/community/

Operating System: Linux-Generic

OS Version: Linux-Generic(glibc 2.12) (x86, 64-bit)

1
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz

2. 安装

先查看下系统磁盘绑定情况, 再决定mysql data目录

命令: df -h

2.1. 创建用户, 用户组, 数据目录

1
2
3
groupadd mysql
useradd -g mysql -d /home/mysql mysql
mkdir /home/mysql/data

2.2. 下载, 解压

1
2
3
cd /home/mysql
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
tar -zvxf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz

2.3. 配置启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 初始化配置
./mysqld --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data --initialize

# 修改basedir, datadir
vim support-files/mysql.server
--------------------------
...
basedir=/home/mysql
datadir=/home/mysql/data
...
--------------------------

# 创建软链接使命令可全局使用
ln -s /home/mysql/bin/mysql /usr/bin/mysql

# 创建配置文件
vi /etc/my.cnf
--------------------------
...
[mysqld]

basedir = /home/mysql
datadir = /home/mysql/data

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'

[mysql]
default-character-set = utf8mb4

[client]
default-character-set=utf8mb4
...
--------------------------

# 添加开机启动
cp /home/mysql/support-files/mysql.server /etc/init.d/mysqld

# 增加可执行权限
chmod 755 /etc/init.d/mysqld

# 查看开机启动列表是否有mysqld, 没有就根据提示添加
chkconfig --list mysqld
chkconfig --add mysqld

# 启动mysql
./support-files/mysql.server start

# 首次进入mysql 并修改root密码
mysql -uroot -p
> alter user user() identified by "修改的密码";

# 查看默认编码集
show variables where variable_name like '%char%' or variable_name like 'collation%';
+--------------------------+-----------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /home/mysql/share/charsets/ |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+-----------------------------+

# systemctl 显示mysqld退出但实际没退出时
systemctl daemon-reload

启动mysql可能出现的错误:

1
2
3
4
5
6
7
8
# error while loading shared libraries: libncurses.so.5 
# error while loading shared libraries: libtinfo.so.5
# 提示缺少依赖libncurses.so.5 和 libtinfo.so.5
# 但在 /usr/lib64 目录下是有 libtinfo.so.6.1 和 libncurses.so.6.1包的
# 所以只需创建个软链接让mysql启动时去找到 *.5的包但实际是调用 *.6.1的包即可

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