linux 源码编译安装MYSQL8.0

来源:这里教程网 时间:2026-03-01 16:50:34 作者:
题外话:源码编译安装消耗时间比较久,在其他方式允许的情况下,不建议使用这种方式。
1.下载mysql8.0安装包:

#安装高版本GCC源

[root@localhost home]# yum install centos-release-scl -y

#安装依赖包和库文件
[root@localhost home]# yum -y install ncurses-devel make perl gcc autoconf automake zlib libxml2 libxml2-devel libgcrypt libtool bison devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-binutils openssl openssl-devel
#启用新版Gcc;
scl enable devtoolset-10 bash
#解压MYSQL8.x软件包;
[root@localhost home]# tar xzf mysql-boost-8.0.28.tar.gz
#进入MYSQL8.x源代码目录;

[root@localhost home]# cd mysql-8.0.28/

#预编译;

[root@localhost mysql-8.0.28]# cmake  .  -DCMAKE_INSTALL_PREFIX=/home/mysql/ \

-DMYSQL_UNIX_ADDR=/home/mysql/sock/mysql.sock \

-DMYSQL_DATADIR=/home/mysql/data \

-DSYSCONFDIR=/etc \

-DMYSQL_USER=mysql \

-DMYSQL_TCP_PORT=3306 \

-DWITH_XTRADB_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_EXTRA_CHARSETS=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DWITH_BIG_TABLES=1 \

-DWITH_DEBUG=0 \

-DWITH_BOOST=./boost/ \

-DFORCE_INSOURCE_BUILD=1

出现错误:bash:cmake:command not found

处理方法:安装Cmake3新版本

#安装Cmake3新版本;
[root@localhost mysql-8.0.28]# yum install cmake3 -y
#将新版本cmake3软链接到cmake;
[root@localhost mysql-8.0.28]# ln -s /usr/bin/cmake3 /usr/bin/cmake
[root@localhost mysql-8.0.28]# mkdir /home/mysql/sock
[root@localhost mysql-8.0.28]# mkdir /home/mysql/data
#预编译;
[root@localhost mysql-8.0.28]# cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/sock/mysql.sock \
-DMYSQL_DATADIR=/home/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0 \
-DWITH_BOOST=./boost/ \

-DFORCE_INSOURCE_BUILD=1

#编译; j4 表示线程
[root@localhost mysql-8.0.28]# make -j4
#安装;
[root@localhost mysql-8.0.28]# make -j4 install
#初始化MYSQL数据库;
[root@localhost mysql-8.0.28]# /home/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/home/mysql/ --datadir=/home/mysql/data
#设置MYSQL为系统服务;
[root@localhost mysql-8.0.28]# ln -s /home/mysql/bin/* /usr/bin/
[root@localhost mysql-8.0.28]# cd /home/mysql
[root@localhost mysql]# \cp support-https://blog.itpub.net/29494175/viewspace-2914044/files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/init.d/mysqld

[root@localhost mysql]# /etc/init.d/mysqld start

报错信息:如下图

处理方式:进行授权
#进行授权
[root@localhost mysql]# chown -R mysql.mysql /home/mysql
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS!
#默认源码安装初始化MYSQL没有密码,直接进入数据库;
#修改密码规则和长度限制;

mysql>set global validate_password.policy=0;

报错信息:Unknown system variable 'validate_password. policy'

解决方法:
安装插件(在MySQL shell中)
安装密码验证组件:
mysql> INSTALL COMPONENT 'https://blog.itpub.net/29494175/viewspace-2914044/file://component_validate_password';

#再次修改密码规则和长度限制;

mysql>set global validate_password.policy=0;
mysql>set global validate_password.length=1;
#修改密码为123456,指令如下;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
#创建用户&授权muqx用户访问;
create user muqx@'%' identified by 'mwm123456';
grant all on *.* to muqx@'%';
#默认root用户不能远程登录,需要更新密码信息;
update mysql.user set host='%' where user="root";
mysql> ALTER%20USER%20'root'@'%'%20IDENTIFIED%20WITH%20mysql_native_password%20BY%20'123456'; 错误描述:ERROR%201396%20(HY000):%20operation%20ALTER%20USER%20failed%20for%20'root%20'%20@'%'
错误原因: 没有进行刷新

处理方法: mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

#再次进行操作

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> grant system_user on *.* to 'root';
mysql> flush privileges;
#修改root密码,命令如下;

mysql> update user set authentication_string=password("root") where user='root' and host='localhost';

#mysql8.0之前的版本中加密规则是mysql_native_password, 而在mysql8之后,加密规则是caching_sha2_password
#如果使用Navicat进行mysql登录时出现弹窗报错,需执行以下指令:
mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

mysql> FLUSH PRIVILEGES;

完成
看到的结果会是这个样子。

游戏是我的全部图景,我将演绎所有的游戏角色,我是每个活着角色的传奇。   --开心研

相关推荐