安装步骤

先删除centos7 自带的 mariadb ,否则会产生冲突!

先删除centos7 自带的 mariadb ,否则会产生冲突!

先删除centos7 自带的 mariadb ,否则会产生冲突!

rpm -qa | grep mariadb

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

打开防火墙端口和关闭selinux

firewall-cmd --zone=public --add-port=3306/tcp --permanent

setenforce 0

1.安装依赖包

yum install -y  gcc gcc-c++ cmake ncurses ncurses-devel bison
yum install -y bison bzip2 git hostname ncurses-devel
yum -y install openssl-devel
yum -y install *libtirpc*
yum -y install centos-release-scl
yum -y install devtoolset-8-gcc*

2.下载相应源码包(找了个别人的图)
mysql8 编译安装需要boost 库,这里官网下载含boost的源码包

centos 用curl源码包升级curl centos源码安装_配置文件

3.添加用户

useradd -s /sbin/nologin mysql

4.建立所需目录并更改所有者为mysql

mkdir -p /usr/local/mysql/data  
chown -R mysql:mysql /usr/local/mysql

5.将下载好的mysql 解压到/usr/local/mysql 目录下

cd /usr/local/mysql

tar -zxvf mysql-boost-8.0.21.tar.gz -C .

 6.切换到解压后的 mysql-8.0.21 目录下,编译安装

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_BOOST=boost \
 -DFORCE_INSOURCE_BUILD=1 \
 -DMYSQL_DATADIR=/usr/local/mysql/data

配置参数说明:

CMAKE_INSTALL_PREFIX :指定基础安装目录 MYSQL_DATADIR :指定数据目录 SYSCONFDIR=/etc :指定配置文件目录 MYSQL_TCP_PORT :指定端口号 WITH_BOOST :指定boost所在目录 DEFAULT_CHARSET :指定默认字符集 DEFAULT_COLLATION :指定默认排序规则 ENABLED_LOCAL_INFILE=ON :是否为load data infile启用local WITH_INNODB_MEMCACHED=ON :是否生成memcached共享库 FORCE_INSOURCE_BUILD: 不要构建源代码


这步有可能会遇到了超多问题,网上基本都有,自己去查,相信你能行的,耐心点就好

其中我觉得最难的是那个 GCC 5.3 or newer is required (-dumpversion says 4.8.5) ,找了很久很久才找到问题解决  

8.安装

make && make install

9.安装好后的/usr/local/mysql 目录结构

centos 用curl源码包升级curl centos源码安装_centos_02

 10.编辑/etc/my.cnf ( 如果没有则创建),我这边的一个配置文件内容如下

# For advice on how to change settings please see
 # http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]
 #
 # Remove leading # and set to the amount of RAM for the most important data
 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
 # innodb_buffer_pool_size = 128M
 #
 # Remove the leading "# " to disable binary logging
 # Binary logging captures changes between backups and is enabled by
 # default. It's default setting is log_bin=binlog
 # disable_log_bin
 #
 # Remove leading # to set options mainly useful for reporting servers.
 # The server defaults are faster for transactions and fast SELECTs.
 # Adjust sizes as needed, experiment to find the optimal values.
 # join_buffer_size = 128M
 # sort_buffer_size = 2M
 # read_rnd_buffer_size = 2M
 #
 # Remove leading # to revert to previous value for default_authentication_plugin,
 # this will increase compatibility with older clients. For background, see:
 # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
 # default-authentication-plugin=mysql_native_password[mysqld]
 # 设置3306端口
 port=3306
 # 设置mysql的安装目录
 basedir=/usr
 # 设置mysql数据库的数据的存放目录
 datadir=/var/lib/mysql
 # 允许最大连接数
 max_connections=200
 # 允许连接失败的次数。
 max_connect_errors=10
 # 服务端使用的字符集默认为utf8mb4
 character-set-server=utf8mb4
 collation-server=utf8mb4_general_ci
 # 创建新表时将使用的默认存储引擎
 default-storage-engine=INNODB
 # 默认使用“mysql_native_password”插件认证
 #mysql_native_password
 default_authentication_plugin=mysql_native_password
 #导出限制
 secure-file-priv=""
 #事件开启
 event_scheduler=onlower_case_table_names = 1
#二进制
 log_bin=/var/log/mysql/binlog
 binlog_expire_logs_seconds = 4860000
 max_binlog_size = 100Mbinlog_format=statement
#通用日志
 general_log=1
 general_log_file=/var/log/mysql/pc.log#慢查询日志
 slow_query_log = on
 slow_query_log_file=/var/log/mysql/slow.log
 long_query_time = 300log_queries_not_using_indexes = on
 socket=/var/lib/mysql/mysql.sock
 log-error=/var/log/mysql/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid#跳过外部锁定
 skip-external-locking#innodb_buffer_pool_size = 128M
 #innodb_log_file_size = 32M
 #innodb_log_buffer_size = 8M
 innodb_flush_log_at_trx_commit = 1#key_buffer_size = 32M
 #max_allowed_packet = 1024M
 #sort_buffer_size = 8M
 #read_buffer_size = 768K
 #read_rnd_buffer_size = 512K 
 [mysql]
 # 设置mysql客户端默认字符集
 default-character-set=utf8mb4
  
 [client]
 # 设置mysql客户端连接服务端时默认使用的端口
 port=3306
 #default-character-set=utf8mb4

9.把安装目录用户和组更改为mysql

chown -R mysql:mysql mysql 

10.进入 bin目录 ,初始化数据库

./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

11.拷贝可执行配置文件

1.cd support-files

2.cp mysql.server /etc/init.d/mysqld

 12.启动服务

service mysqld start

centos 用curl源码包升级curl centos源码安装_配置文件_03

13. 测试连接,因为配置文件中有  skip-grant-tables,所以无需密码即可成功

./mysql -hlocalhost -uroot -p

14.设定新密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

15.将配置文件里的  skip-grant-tables 删除,重新打开mysql服务

service mysqld stop

service mysqld start

16.建立软连接

 ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

17.设置开机启动

systemctl enable mysqld