文档课题:rhel 7.3多种方法安装MySQL 5.7.
数据库:MySQL 5.7
系统:rhel 7.3
说明:rhel7.x版本针对Mysql的安装和使用与之前的rhel6版本有所不同,如下介绍在rhel7.x环境里安装mysql5.7的几种方法.
1、yum方式
从CentOS 7.0发布以来,yum源中开始使用Mariadb来代替MySQL的安装.即使输入的是yum install -y mysql , 显示的也是Mariadb的安装内容.
使用源代码进行编译安装太麻烦.因此若想使用yum安装MySQL,需要去下载官方指定的yum源,下载方式如下:
yum下载网址为:https://dev.mysql.com/downloads/repo/yum/
找到Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package,单击后面的Download,在新的页面中单击最下面的No thanks, just start my download,便可下载yum源.
1.1、安装MySQL YUM资源库
[root@leo-mysql-master ~]# yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
1.2、导入2022年密匙
--在安装mysql之前导入2022年密匙.
[root@leo-mysql-master ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
1.3、安装mysql 5.7
[root@leo-mysql-master ~]# yum install -y mysql-community-server
1.4、启动数据库
启动MySQL服务器和MySQL的自动启动
[root@leo-mysql-master ~]# systemctl start mysqld.service
[root@leo-mysql-master ~]# systemctl enable mysqld.service
1.5、密码问题
说明:MySQL从5.7开始不允许首次安装后使用空密码进行登录!为加强安全性,系统会随机生成一个密码以供管理员首次登录使用,该密码记录在/var/log/mysqld.log文件中,使用如下命令查看此密码:
[root@leo-mysql-master ~]# cat /var/log/mysqld.log|grep 'A temporary password'
2023-07-01T03:02:16.040090Z 1 [Note] A temporary password is generated for root@localhost: C1kUP.XQrki7
说明:最后一行中冒号后面的部分C1kUP.XQrki7为初始密码.
1.6、修改密码
--使用此密码登录mysql.
[root@leo-mysql-master ~]# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.42

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> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql> alter user 'root'@'localhost' identified by 'mysql_4U';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2、rpm包方式
2.1、卸载MariaDB
--卸载系统自带的mysql和mariadb-lib.
[root@leo-mysql-master ~]# /bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps
[root@leo-mysql-master ~]# /bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) –nodeps
2.2、处理rpm包
--上传mysql 5.7.21 rpm安装包.
sftp> lcd F:\installmedium\mysql\MySQL-5.7.21
sftp> put mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
--解压rpm安装包
[root@leo-mysql-master ~]# tar -vxf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-devel-5.7.21-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.21-1.el7.x86_64.rpm
mysql-community-common-5.7.21-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.21-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.21-1.el7.x86_64.rpm
mysql-community-client-5.7.21-1.el7.x86_64.rpm
mysql-community-server-5.7.21-1.el7.x86_64.rpm
mysql-community-embedded-5.7.21-1.el7.x86_64.rpm
mysql-community-test-5.7.21-1.el7.x86_64.rpm
mysql-community-devel-5.7.21-1.el7.x86_64.rpm
mysql-community-libs-5.7.21-1.el7.x86_64.rpm
2.3、安装数据库
--依次执行如下命令安装数据库.
[root@leo-mysql-master ~]# rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm --force
warning: mysql-community-common-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-common-5.7.21-1.e################################# [100%]
[root@leo-mysql-master ~]# rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm --force
warning: mysql-community-libs-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-libs-5.7.21-1.el7################################# [100%]
[root@leo-mysql-master ~]# rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm --force
warning: mysql-community-client-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-client-5.7.21-1.e################################# [100%]
[root@leo-mysql-master ~]# rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm --force
warning: mysql-community-server-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-server-5.7.21-1.e################################# [100%]
2.4、数据库初始化
--为保证数据库目录与文件的所有者为mysq登录用户,如果是以root身份运行mysql服务,则需执行如下命令进行初始化
[root@leo-mysql-master mysql]# mysqld --initiablize --user=mysql
说明:新版推荐此方法,执行后会在/var/log/mysqld.log生成随机密码,若是以mysql身份运行,则可以去--user选项.
2.5、更改目录属性
--更改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库.
[root@leo-mysql-master mysql]# chown -R mysql:mysql /var/lib/mysql
2.6、修改密码
--启动数据库
[root@leo-mysql-master mysql]# systemctl start mysqld.service
--根据步骤2.4中得到的密码登录mysql,更改root用户的密码. 
[root@leo-mysql-master ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

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 by 'mysql_4U';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@datadir;
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
3、编译方式
3.1、卸载MariaDB
--卸载系统自带的mysql和mariadb-lib.
[root@leo-mysql-master ~]# /bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps
[root@leo-mysql-master ~]# /bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps
3.2、安装依赖包
--安装编译代码需要的依赖包.
[root@leo-mysql-master ~]# mkdir -p /etc/yum.repos.d/bak
[root@leo-mysql-master ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
[root@leo-mysql-master ~]# cat <<EOF>>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF
[root@leo-mysql-master ~]# yum makecache
[root@leo-mysql-master ~]# /usr/bin/yum -y install make gcc-c++ cmake bison-devel ncurses-devel
3.3、安装boost
[root@leo-mysql-master ~]# mkdir -p /usr/local/boost
[root@leo-mysql-master ~]# cd /usr/local/boost
sftp> cd /usr/local/boost
sftp> lcd F:\installmedium\mysql\package
sftp> put boost_1_59_0.tar.gz
[root@leo-mysql-master boost]# tar -zxf boost_1_59_0.tar.gz

3.4、编译安装数据库
[root@leo-mysql-master ~]# groupadd mysql
[root@leo-mysql-master ~]# useradd -g mysql mysql -M -s /sbin/nologin
[root@leo-mysql-master ~]# cd /usr/local/src
sftp> cd /usr/local/src
sftp> lcd F:\installmedium\mysql\MySQL-5.7.21
sftp> put mysql-5.7.21.tar.gz
[root@leo-mysql-master src]# tar -zxf mysql-5.7.21.tar.gz
[root@leo-mysql-master src]# cd mysql-5.7.21
[root@leo-mysql-master ~]# /usr/bin/cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost
参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql                  安装位置
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock                       指定socket(套接字)文件位置
-DEXTRA_CHARSETS=all                                    扩展字符支持
-DDEFAULT_CHARSET=utf8                                  默认字符集
-DDEFAULT_COLLATION=utf8_general_ci                       默认字符校对
-DWITH_MYISAM_STORAGE_ENGINE=1                      安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1                     安装innodb存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1                      安装memory存储引擎
-DWITH_READLINE=1                                        支持readline库
-DENABLED_LOCAL_INFILE=1                                启用加载本地数据
-DMYSQL_USER=mysql                                       指定mysql运行用户
-DMYSQL_TCP_PORT=3306                                    指定mysql端口

参数说明参考网址:https://blog.csdn.net/gs096929/article/details/121367554
[root@leo-mysql-master ~]# make & make install

说明:make & make install命令执行时间较长.
3.5、修改权限
[root@leo-mysql-master mysql-5.7.21]# mkdir -p /data/mysql/data
[root@leo-mysql-master mysql-5.7.21]# chown -R mysql:mysql /data/mysql
3.6、初始化
--执行初始化配置脚本,创建系统自带的数据库和表.
[root@leo-mysql-master mysql-5.7.21]# /data/mysql/bin/mysql_install_db --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql
2023-07-02 00:10:03 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2023-07-02 00:10:05 [WARNING] The bootstrap log isn't empty:
2023-07-02 00:10:05 [WARNING] 2023-07-01T16:10:03.391858Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
2023-07-01T16:10:03.392340Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2023-07-01T16:10:03.392344Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
说明:此处建议使用mysqld --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql --initialize命令.
3.7、配置my.cnf
[root@leo-mysql-master ~]# vi /data/mysql/my.cnf
[client]
port = 3306
socket = /data/mysql/var/mysql.sock
   
[mysqld]
port = 3306
socket = /data/mysql/var/mysql.sock
   
basedir = /data/mysql/
datadir = /data/mysql/data
pid-file = /data/mysql/data/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
sync_binlog=1
log_bin = mysql-bin
   
skip-name-resolve
#skip-networking
back_log = 600
   
max_connections = 3000
max_connect_errors = 3000
##open_files_limit = 65535
table_open_cache = 512
max_allowed_packet = 16M
binlog_cache_size = 16M
max_heap_table_size = 16M
tmp_table_size = 256M
   
read_buffer_size = 1024M
read_rnd_buffer_size = 1024M
sort_buffer_size = 1024M
join_buffer_size = 1024M
key_buffer_size = 8192M
   
thread_cache_size = 8
   
query_cache_size = 512M
query_cache_limit = 1024M
   
ft_min_word_len = 4
   
binlog_format = mixed
expire_logs_days = 30
   
log_error = /data/mysql/data/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/data/mysql-slow.log
   
performance_schema = 0
explicit_defaults_for_timestamp
   
##lower_case_table_names = 1
   
skip-external-locking
   
default_storage_engine = InnoDB
##default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 40960M
innodb_write_io_threads = 1000
innodb_read_io_threads = 1000
innodb_thread_concurrency = 8
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 4M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
   
bulk_insert_buffer_size = 8M
#myisam_sort_buffer_size = 8M
#myisam_max_sort_file_size = 1G
#myisam_repair_threads = 1
   
interactive_timeout = 28800
wait_timeout = 28800
   
[mysqldump]
quick
max_allowed_packet = 16M
   
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
   
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port = 3306
3.8、启动mysql服务
[root@leo-mysql-master ~]# cd /data/mysql
[root@leo-mysql-master mysql]# mkdir var
[root@leo-mysql-master mysql]# chown -R mysql.mysql var
[root@leo-mysql-master mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@leo-mysql-master mysql]# chkconfig mysql on
[root@leo-mysql-master mysql]# service mysql start
Starting MySQL.Logging to '/data/mysql/data/mysql-error.log'.
......................... SUCCESS!
3.9、设置环境变量
[root@leo-mysql-master mysql]# echo "export PATH=$PATH:/data/mysql/bin" >> /etc/profile
[root@leo-mysql-master mysql]# source /etc/profile
3.10、修改密码
[root@leo-mysql-master ~]# mkdir -p /var/lib/mysql
[root@leo-mysql-master ~]# ln -s /data/mysql/var/mysql.sock /var/lib/mysql/mysql.sock
由于MySQL从5.7开始不允许首次安装后默认使用空密码进行登录,并且MySQL 5.7之后的数据库表里已经没有password字段,该字段已修改成authentication_string.
--修改密码的命令如下:
[root@leo-mysql-master ~]# vi /data/mysql/my.cnf
……
skip-grant-tables   //先设置无密码登录
……
[root@leo-mysql-master ~]# service mysql restart
Shutting down MySQL.......... SUCCESS! 
Starting MySQL............. SUCCESS! 
[root@leo-mysql-master ~]# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21-log Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

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> update mysql.user set authentication_string=password('mysql') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

说明:然后将/data/mysql/my.cnf配置文件中”skip-grant-tables”去掉,重启mysql服务后就可以使用上面重置的新密码登录.
4、yum安装MariaDB
4.1、配置yun源
[root@leo-mysql-master ~]# mount /dev/sr0 /mnt
[root@leo-mysql-master ~]# mkdir -p /etc/yum.repos.d/bak
[root@leo-mysql-master ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
[root@leo-mysql-master ~]# cat <<EOF>>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF
[root@leo-mysql-master ~]# yum makecache
4.2、安装MariaDB
[root@leo-mysql-master ~]# yum -y install mariadb mariadb-server
[root@leo-mysql-master ~]# systemctl start mariadb
[root@leo-mysql-master ~]# systemctl enable mariadb
4.3、配置数据库
--接下来进行MariaDB相关配置.
[root@leo-mysql-master ~]# mysql_secure_installation
Enter current password for root (enter for none):  <-初次运行直接回车
   
设置密码
   
Set root password? [Y/n]  <- 是否设置root用户密码,输入y并回车或直接回车
New password:  <- 设置root用户的密码
Re-enter new password:  <- 再输入一次设置的密码
   
其他配置
Remove anonymous users? [Y/n]  <- 是否删除匿名用户,回车
Disallow root login remotely? [Y/n]  <- 是否禁止root远程登录,回车,
Remove test database and access to it? [Y/n]  <- 是否删除test数据库,回车
Reload privilege tables now? [Y/n]  <- 是否重新加载权限表,回车

[root@leo-mysql-master ~]# mysql -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
4.4、配置字符集
--配置MariaDB字符集.
[root@leo-mysql-master etc]# vi my.cnf
--首先是配置文件/etc/my.cnf,在[mysqld]文件中添加如下内容:
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

[root@leo-mysql-master ~]# vi /etc/my.cnf.d/client.cnf
--接着在配置文件/etc/my.cnf.d/client.cnf的[client]下添加如下内容:
default-character-set=utf8

[root@leo-mysql-master etc]# vi /etc/my.cnf.d/mysql-clients.cnf
--然后在配置文件/etc/my.cnf.d/mysql-clients.cnf的[mysql]下添加如下内容:
default-character-set=utf8

--重启MariaDB后登录数据库查看字符集.
[root@leo-mysql-master ~]# systemctl restart mariadb
[root@leo-mysql-master ~]# mysql -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

MariaDB [(none)]> show variables like "%collation%";
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

4.5、创建数据库
创建Confluence数据库、用户名和密码
MariaDB [(none)]> create database confluence default character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on confluence.* to 'confluence'@'%' identified by 'confluenceword'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

参考文档:https://www.cnblogs.com/kevingrace/p/8340690.html