题外话:源码编译安装消耗时间比较久,在其他方式允许的情况下,不建议使用这种方式。
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-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 '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 USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
错误描述:ERROR 1396 (HY000): operation ALTER USER failed for 'root ' @'%'
错误原因:
没有进行刷新
处理方法:
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;

完成
看到的结果会是这个样子。
游戏是我的全部图景,我将演绎所有的游戏角色,我是每个活着角色的传奇。 --开心研
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29494175/viewspace-2914044/
,如需转载,请注明出处,否则将追究法律责任。