mysql8.3 编译安装

发布于 2024-03-23  166 次阅读


注意:mysql8.3 使用了更高版本的依赖库

安装依赖包

[root@localhost ~] yum install -y gcc-c++ make cmake3 bison ncurses-devel openssl-devel openssl
[root@localhost ~] yum install centos-release-scl
[root@localhost ~] yum install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils

下载源码包并编译

[root@localhost ~] wget https://cdn.mysql.com//Downloads/MySQL-8.3/mysql-boost-8.3.0.tar.gz
[root@localhost mysql-8.3.0]# cmake3 . 
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_BOOST=boost/boost_1_77_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 -DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

[root@localhost mysql-8.3.0]# make -j 2
[root@localhost mysql-8.3.0]# make install

创建目录
[root@localhost mysql-8.3.0]# mkdir /usr/local/{tmp,log,data}

授权
[root@localhost mysql-8.3.0]# useradd -s /sbin/nologin -M mysql
[root@localhost mysql-8.3.0]# chown mysql.mysql -R /usr/local/{mysql,tmp,log,data}

编写配置文件

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql                    #安装目录
datadir = /usr/local/data                                        #数据存放目录
tmpdir = /usr/local/tmp                                          #/tmp缓存目录
socket = /usr/local/tmp/mysql.sock                       #指定socket文件的位置
pid_file = /usr/local/tmp/mysqld.pid                     #指定pid文件的位置
log_error = /usr/local/log/mysql_error.log       #错误日志的位置
slow_query_log_file = /usr/local/log/slow_warn.log  #慢日志查询

server_id = 1                                           #server-id=??
user = mysql                                            #指定用户
port = 3306                                                     #指定端口
bind-address = 0.0.0.0                          #监听地址(允许所以ip访问)
character-set-server = utf8                     #字符集
default_storage_engine = InnoDB         #引擎
default-authentication-plugin=mysql_native_password

初始化及启动

[root@localhost mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql'
[root@localhost mysql]# cat ../log/mysql_error.log 
2024-03-23T00:34:54.408924Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2024-03-23T00:34:54.410320Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.3.0) initializing of server in progress as process 51042
2024-03-23T00:34:54.411435Z 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.
2024-03-23T00:34:54.415112Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-03-23T00:34:54.568295Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-03-23T00:34:55.248041Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rEklmGr4tv!O
2024-03-23T00:34:56.873022Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.

[root@localhost mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf
[root@localhost mysql]# ss -tnlp
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128               *:22                            *:*                   users:(("sshd",pid=915,fd=3))
LISTEN     0      128               *:3306                          *:*                   users:(("mysqld",pid=51844,fd=22))
LISTEN     0      128            [::]:22                         [::]:*                   users:(("sshd",pid=915,fd=4))
LISTEN     0      70             [::]:33060                      [::]:*                   users:(("mysqld",pid=51844,fd=20))

MySQL 默认 TCP 端口号:
1、3306 用于 MySQL Classic 协议(服务器端口选项)
2、33060 用于 MySQL X 协议(服务器 mysqlx_port 选项)
3、33062 用于使用 MySQL Classic 协议的管理连接(服务器 admin_port 选项)

修改密码
[root@localhost mysql]# ./bin/mysqladmin -uroot -p'rEklmGr4tv!O' password 'QianFeng@123'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

测试连接
[root@localhost mysql]# ./bin/mysql -uroot -pQianFeng@123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.3.0 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

配置环境变量及启动方式

配置环境变量
[root@localhost ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh

配置启动方式
[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# systemctl daemon-reload