源码安装MySQL 8.0

# MySQL 8.0编译环境需求
cmake > 3.5
gcc > 5.3,官方使用gcc8编译
C API包括:c++,c99
SSL
boot c++
Ncurses
Perl & bison 2.1 




# 下载包含Boost C++ 库的MySQL源码包
https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.36.tar.gz


# 编译MySQL
cd /root/mysql-8.0.36

cmake . \
-DWITH_BOOST=./boost/ \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DCMAKE_INSTALL_PREFIX=/usr/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DSYSCONFDIR=/ \
-DFORCE_INSOURCE_BUILD=1 


make -j4
make install


# 创建运行的用户
groupadd mysql -g 2801
useradd -g mysql -m -p mysql -u 2801 mysql


cat >  /etc/my.cnf  << EOF
[client]
port                                        = 6033
socket                                      = /data/mysql/tmp/mysql.sock

[mysql]
prompt                                      = "\\u@\\h:\\p/\\d> "
prompt                                      = "\\h:\\p_\\u@\\d \\R:\\m:\\s>"
no-auto-rehash  
#tee                                         = /data/mysql/tmp/mysql_operation.log
default_character_set                       = utf8mb4

[mysqld]
## 需要根据实际情况修改的参数
port                                        = 6033
server_id                                   = 816033 
basedir                                     = /usr/mysql
datadir                                     = /data/mysql/dbdata
pid_file                                    = /data/mysql/tmp/mysqld.pid
socket                                      = /data/mysql/tmp/mysql.sock
tmpdir                                      = /data/mysql/tmp
secure_file_priv                            = /data/mysql/tmp
log_bin                                     = /data/mysql/log/mysql-bin
log_bin_index                               = /data/mysql/log/mysql-bin-index
slow_query_log_file                         = /data/mysql/log/slow.log
log-error                                   = /data/mysql/log/error.log
relay_log                                   = /data/mysql/log/mysql-relay
relay_log_index                             = /data/mysql/log/mysql-relay-index
innodb_buffer_pool_size                     = 1G
expire_logs_days                            = 1
default_time_zone                           = "+8:00"
report_host                                 = 10.2.29.64
sql_mode                                    = ""

## general
user                                        = mysql
character_set_server                        = utf8mb4
collation_server                            = utf8mb4_bin
transaction_isolation                       = READ-COMMITTED
lower_case_table_names                      = 1  
skip_name_resolve                           = 1

## GTID
gtid_mode                                   = on
enforce_gtid_consistency                    = 1
master_info_repository                      = TABLE
relay_log_info_repository                   = TABLE

[mysqldump]
quick
max_allowed_packet                          = 2G
EOF


mkdir -p /data/mysql/{dbdata,log,tmp}/
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql:mysql /data/mysql/
chown mysql:mysql /etc/my.cnf


/usr/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --initialize-insecure


/usr/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

 

posted @ 2025-06-21 01:45  屠魔的少年  阅读(37)  评论(0)    收藏  举报