安装必须依赖
[root@localhost ~]# yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
创建相关目录和文件(不需要手动创建data目录,初始化数据库时会自动创建)
[root@localhost ~]# mkdir /program/mysql-8.1 && \
mkdir /program/mysql-8.1/ssl && \
mkdir /program/mysql-8.1/log && \
touch /program/mysql-8.1/log/error.log && \
touch /program/mysql-8.1/log/slow-query.log && \
touch /program/mysql-8.1/log/general.log && \
chown -R mysql:mysql /program/mysql-8.1
[root@localhost ~]#
开始安装
[root@localhost src]# ls
mysql-boost-8.1.0.tar.gz
[root@localhost src]# tar -xf mysql-boost-8.1.0.tar.gz && cd mysql-8.1.0/
[root@localhost mysql-8.1.0]# cp -r boost/ /program/mysql-8.1 # 和之前版本不同,8.1版本必须指定boost路径,所以将源码boost目录复制到安装目录下
[root@localhost mysql-8.1.0]# mkdir bld && cd bld/
[root@localhost bld]# cmake .. \
-DCMAKE_INSTALL_PREFIX=/program/mysql-8.1 \
-DSYSCONFDIR=/program/mysql-8.1 \
-DMYSQL_DATADIR=/program/mysql-8.1/data \
-DWITH_BOOST=/program/mysql-8.1/boost \
-DCMAKE_C_COMPILER=/usr/bin/cc \
-DCMAKE_CXX_COMPILER=/usr/bin/c++ \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DFORCE_INSOURCE_BUILD=1 \
-DMYSQL_TCP_PORT=3308
[root@localhost bld]# make # 此步骤非常耗时(建议泡壶茶&看个电影慢慢等)
[root@localhost bld]# make install
cmake部分参数说明
--------------------------------------------------
DCMAKE_INSTALL_PREFIX:指定安装目录
DMYSQL_DATADIR:指定data目录
DSYSCONFDIR:指定my.cnf配置文件目录
DMYSQL_TCP_PORT:指定端口号(由于3306已被旧版本占用,故这里使用3308)
生成SSL证书(非必须步骤,对安全性要求不高可跳过)
[root@localhost ~]# /program/mysql-8.1/bin/mysql_ssl_rsa_setup --datadir=/program/mysql-8.1/ssl
[root@localhost ~]# chown -R mysql:mysql /program/mysql-8.1
安装完后MySQL会自动生成几个配置文件,为避免出现配置混乱,只使用“{安装目录}/my.cnf”这一个配置文件,其它配置文件一律删除
[root@localhost ~]# /program/mysql-8.1/bin/mysql --help | grep 'Default options' -A 1
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /program/mysql-8.1/my.cnf ~/.my.cnf
[root@localhost ~]# rm -rf /etc/my.cnf /etc/mysql/my.cnf
创建my.cnf文件并进行配置
[root@localhost ~]# vim /program/mysql-8.1/my.cnf
……(此处请去看《my.cnf文件配置示例》文章)……
[root@localhost ~]#
初始化数据库(如果需要重新初始化数据库请先手动删除data目录)
[root@localhost ~]# /program/mysql-8.1/bin/mysqld --initialize --user=mysql
获取root用户初始密码
[root@localhost ~]# cat /program/mysql-8.1/log/error.log
[System] [MY-015017] [Server] MySQL Server Initialization - start.
[System] [MY-013169] [Server] /program/mysql-8.1/bin/mysqld (mysqld 8.1.0) initializing of server in progress as process 63941
[System] [MY-013576] [InnoDB] InnoDB initialization has started.
[System] [MY-013577] [InnoDB] InnoDB initialization has ended.
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: AG/!lwLWG2yI # 这是root用户初始密码
[System] [MY-015018] [Server] MySQL Server Initialization - end.
[root@localhost ~]#
把MySQL加入chkconfig方便管理
[root@localhost ~]# cp /program/mysql-8.1/support-files/mysql.server /etc/init.d/mysql-8.1
[root@localhost ~]#
chmod +x /etc/init.d/mysql-8.1
[root@localhost ~]# vim /etc/init.d/mysql-8.1 # 由于旧版本MySQL也在运行,需要将新版本的lock文件、pid文件和旧版本的区分开,不然启动时会出错
……(此处省略内容若干)……
# lock文件加上版本号和旧版本的lock文件区分开
lock_file_path="$lockdir/mysql-8.1"
# pid文件加上版本号和旧版本的pid文件区分开
mysqld_pid_file_path="/dev/shm/mysql-8.1.pid"
……(此处省略内容若干)……
[root@localhost ~]# chkconfig --add mysql-8.1
常用管理命令
[root@localhost ~]# chkconfig mysql-8.1 on # 设置开机自动启动MySQL
[root@localhost ~]# chkconfig mysql-8.1 off # 取消开机自动启动MySQL
[root@localhost ~]# service mysql-8.1 status # 查看MySQL运行状态
[root@localhost ~]# service mysql-8.1 start # 启动MySQL
[root@localhost ~]# service mysql-8.1 stop # 停止MySQL
[root@localhost ~]# service mysql-8.1 restart # 重启MySQL
启动数据库并修改root用户初始密码
[root@localhost ~]# service mysql-8.1 status
[root@localhost ~]# service mysql-8.1 start
[root@localhost ~]# /program/mysql-8.1/bin/mysql --socket=/dev/shm/mysql-8.1.sock -u root -p # 由于旧版本MySQL也在运行,为了避免进入旧版本的命令行所以指定socket
Enter password: AG/!lwLWG2yI # 这里输入root用户初始密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.1.0 # 注意版本号,别改了旧版本的root用户密码
Copyright (c) 2000, 2023, 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> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '密码'; -- 修改root密码
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT;
Bye
[root@localhost ~]#