0
点赞
收藏
分享

微信扫一扫

CentOS7 Mysql安装部署

爱做梦的夏夏 2022-04-01 阅读 88
mysqlcentos

二、MySQL 安装部署

2.1 RPM包安装

2.1.1 yum在线安装

MySQL官方网站

1、下载并安装MySQL官方的 Yum Repository

[root@node1 ~]# wget -c https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm

2、添加 MySQL Yum Repository

[root@node1 ~]# yum localinstall mysql80-community-release-el7-5.noarch.rpm -y

3、选择安装发行版

[root@node1 ~]# yum-config-manager --disable mysql80-community   #禁用8.0
[root@node1 ~]# yum-config-manager --enable mysql57-community	#启用5.7

4、在线安装

[root@node1 ~]# yum install -y mysql-community-server

5、启动数据库

[root@node1 ~]# systemctl enable --now mysqld

6、登陆

[root@node1 ~]# tmp_pwd=`awk '/temporary password/ {print $NF}' /var/log/mysqld.log`
[root@node1 ~]# mysql -uroot -p$tmp_pwd
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, 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>

7、验证

#查看状态
[root@node1 ~]# systemctl status mysqld
#查看端口
[root@node1 ~]# netstat -lnpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      1823/mysqld
#查看进程
[root@node1 ~]# ps -ef | grep mysqld
mysql      1823      1  0 22:08 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root       1856   1393  0 22:10 pts/0    00:00:00 grep --color=auto mysqld

2.1.2 rpm包离线安装

事先从官网下载RPM安装包,上传至服务器:

[root@node2 ~]# ls -l mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
-rw-r--r-- 1 root root 545894400 Mar 27 22:31 mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar

解压查看:

[root@node2 ~]# tar xf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
[root@node2 ~]# ls -l mysql-community-*
-rw-r--r-- 1 7155 31415  26670472 Dec 16 10:01 mysql-community-client-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415    318884 Dec 16 10:01 mysql-community-common-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   4122424 Dec 16 10:01 mysql-community-devel-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415  47760004 Dec 16 10:02 mysql-community-embedded-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415  23316972 Dec 16 10:02 mysql-community-embedded-compat-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 132204460 Dec 16 10:02 mysql-community-embedded-devel-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   2474780 Dec 16 10:02 mysql-community-libs-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   1264836 Dec 16 10:02 mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 182274360 Dec 16 10:02 mysql-community-server-5.7.37-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 125477564 Dec 16 10:03 mysql-community-test-5.7.37-1.el7.x86_64.rpm

其中:
mysql-community-client 客户端
mysql-community-devel 开发库
mysql-community-common 服务端和客户端的公共文件
mysql-community-embedded 嵌入式
mysql-community-serve 服务端
mysql-community-test 测试组件
mysql-community-libs 共享库
mysql-community-libs-compat MySQL之前版本的共享兼容库

安装:
首先限制mariadb相关软件包。

[root@node2 ~]# yum remove mariadb-libs -y
# 安装
[root@node2 ~]# rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm 
 mysql-community-common-5.7.37-1.el7.x86_64.rpm \
 mysql-community-libs-5.7.37-1.el7.x86_64.rpm \
 mysql-community-server-5.7.37-1.el7.x86_64.rpm

设计开机自启并启动

[root@node2 ~]# systemctl enable --now mysqld

登陆

[root@node2 ~]# tmp_pwd=`awk '/temporary password/ {print $NF}' /var/log/mysqld.log`
[root@node2 ~]# mysql -uroot -p$tmp_pwd
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, 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>

2.2 通用二进制格式安装

1、下载glibc版本的Mysql

[root@node3 ~]# ll mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root 666603757 Mar 29 16:39 mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

2、新建用户以安全方式运行进程

[root@node3 ~]# groupadd -r -g 306 mysql
[root@node3 ~]# useradd -r -g 306 -u 306 -s /bin/false mysql

3、解压,创建软连接

[root@node3 ~]# tar xf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz  -C /usr/local/
[root@node3 ~]# ln -sv /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64/ /usr/local/mysql
‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.7.37-linux-glibc2.12-x86_64/’

4、修改文件权限,配置环境变量

[root@node3 ~]# chown -R mysql.mysql /usr/local/mysql/  # 修改文件
[root@node3 ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
[root@node3 ~]# source /etc/profile.d/mysql.sh

5、初始化

[root@node3 ~]# mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
...
2022-03-29T09:07:02.861566Z 1 [Note] A temporary password is generated for root@localhost: GoXgsae%L2,0
[root@node3 ~]# tmp_pwd='GoXgsae%L2,0'

6、为mysql提供主配置文件

[root@node3 ~]# vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=mysqld.pid

7、为mysql提供sysv服务脚本

[root@node3 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

8、启动mysql

[root@node3 ~]# chkconfig --add mysqld  #添加为系统服务
[root@node3 ~]# chkconfig mysqld on		#开机自启动
[root@node3 ~]# systemctl start mysqld

9、登陆

[root@node3 ~]# mysql -uroot -p$tmp_pwd
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, 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>

2.3 源码安装

从5.5开始使用cmake编译。
1、安装开发工具和开发包

[root@node4 ~]# yum install make gcc gcc-c++ cmake bison-devel ncurses-devel openssl-devel -y

2、 创建用户和组

[root@node4 ~]# groupadd -r -g 306 mysql
[root@node4 ~]# useradd -r -u 306 -g 306 -s /bin/false mysql

3、编译安装MySQL

1)解压

[root@node4 ~]# tar xf mysql-boost-5.7.37.tar.gz -C /usr/local/src/

2)使用cmake编译MySQL

[root@node4 mysql-5.7.37]# cmake -DWITH_BOOST=/usr/local/src/mysql-5.7.37/boost \
 -DWITH_ZLIB=system \
 -DSYSCONFDIR=/etc \
 -DMYSQL_DATADIR=/usr/local/mysql/data

MySQL :: MySQL 5.7 Reference Manual :: 2.9.7 MySQL Source-Configuration Options

Formats(格式)Description(描述)
MYSQL_DATADIRData directory 数据目录
SYSCONFDIROption file directory 选项文件目录
WITH_BOOSTThe location of the Boost library sourcesBoost 库源的位置
WITH_ZLIBType of zlib support zlib 支持的类型

cmake指定编译选项的方式不同于make,其实现方式对比如下:

./configure 			cmake .      
./configure --help 		cmake . -LH or ccmake .

注意:如果想清理此前的编译所生成的文件重新编译,则需要使用如下两条命令:

[root@node4 mysql-5.7.37]make clean;rm CMakeCache.txt

3)编译安装

[root@node4 mysql-5.7.37]# make && make install

4、配置环境变量

[root@node4 ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
[root@node4 ~]# source /etc/profile.d/mysql.sh

5、初始化

[root@node4 ~]#  mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
...
2022-03-29T12:03:46.314041Z 1 [Note] A temporary password is generated for root@localhost: >RHWf2A#y6u-
[root@node4 ~]# tmp_pwd='>RHWf2A#y6u-'

6、为mysql提供主配置文件

[root@node3 ~]# vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=mysqld.pid

7、为mysql提供sysv服务脚本

[root@node4 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@node4 ~]# chkconfig --add mysqld
[root@node4 ~]# chkconfig mysqld on

启动MySQL:

[root@node4 ~]# systemctl start mysqld

登陆:

[root@node4 ~]# mysql -uroot -p$tmp_pwd
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.37

Copyright (c) 2000, 2022, 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>

2.4 MySQL多实例安装

1、创建mysql用户及组

[root@node5 ~]# groupadd -r -g 306 mysql
[root@node5 ~]# useradd -r -g 306 -u 306 -s /bin/false mysql

2、获取软件

[root@node5 ~]# ll mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root 666603757 Mar 29 20:21 mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

3、解压,创建软连接

[root@node5 ~]# tar xf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local
[root@node5 ~]# ln -sv /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql
‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.7.37-linux-glibc2.12-x86_64’

4、配置mysql环境变量

[root@node5 ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
[root@node5 ~]# source /etc/profile.d/mysql.sh

5、准备数据目录

[root@node5 ~]# mkdir -p /data/330{6..8}/data
[root@node5 ~]# tree /data
/data
├── 3306
│   └── data
├── 3307
│   └── data
└── 3308
    └── data

6 directories, 0 files

方法1:每一个MySQL多实例的配置文件

① 配置文件

[root@node5 ~]# vim /data/3306/my.cnf
[client]
port = 3306
socket = /data/3306/mysql.sock

[mysqld]
user = mysql
port = 3306
socket = /data/3306/mysql.sock
basedir = /usr/local/mysql
datadir = /data/3306/data
server-id = 3306

[mysqldump]
quick
max_allowed_packet = 16M

[mysqld_safe]
log-error=/data/3306/mysql_3306.err
pid-file=/data/3306/mysqld.pid

[root@node5 ~]# for i in 330{7,8}; do cp /data/3306/my.cnf /data/$i/my.cnf; sed -i "s/3306/$i/g" /data/$i/my.cnf; done
[root@node5 ~]# touch /data/3306/mysql_3306.err /data/3307/mysql_3307.err /data/3308/mysql_3308.err

②修改MySQL多实例的文件权限

[root@node5 ~]# chown -R mysql.mysql /data/330{6..8}/

③初始化多实例

[root@node5 ~]# mysqld --initialize --datadir=/data/3306/data --basedir=/usr/local/mysql --user=mysql
...
2022-03-29T12:51:20.868470Z 1 [Note] A temporary password is generated for root@localhost: _6qQjp!*ymf_
[root@node5 ~]# mysqld --initialize --datadir=/data/3307/data --basedir=/usr/local/mysql --user=mysql
...
2022-03-29T12:51:50.476617Z 1 [Note] A temporary password is generated for root@localhost: /(v+FhezJ4oj
[root@node5 ~]# mysqld --initialize --datadir=/data/3307/data --basedir=/usr/local/mysql --user=mysql
...
2022-03-29T12:52:21.663797Z 1 [Note] A temporary password is generated for root@localhost: kSTC#H2H(ool

④启动MySQL多实例

[root@node5 ~]# mysqld_safe --defaults-file=/data/3306/my.cnf &
[root@node5 ~]# mysqld_safe --defaults-file=/data/3307/my.cnf &
[root@node5 ~]# mysqld_safe --defaults-file=/data/3308/my.cnf &
[root@node5 ~]# netstat -lnupt | grep 330
tcp6       0      0 :::3306                 :::*                    LISTEN      1901/mysqld
tcp6       0      0 :::3307                 :::*                    LISTEN      2091/mysqld
tcp6       0      0 :::3308                 :::*                    LISTEN      4071/mysqld

⑤登录

[root@node5 ~]# mysql -uroot -p' _6qQjp!*ymf_' -S /data/3306/mysql.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.37

Copyright (c) 2000, 2022, 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>

⑥修改密码

[root@node5 ~]# mysqladmin -uroot -p'_6qQjp!*ymf_' -S /data/3306/mysql.sock password 'MySQL@123'

⑦关闭

[root@node5 ~]# mysqladmin -uroot -p'MySQL@123' -S /data/3306/mysql.sock shutdown

方法2:使用官方mysqld_multi

MySQL :: MySQL 5.7 Reference Manual :: 4.3.4 mysqld_multi — Manage Multiple MySQL Servers

②如果要加log-error的配置,需事先创建文件或者在初始化加入log-error参数

[root@node5 ~]# touch /data/3306/mysql_3306.err /data/3307/mysql_3307.err /data/3308/mysql_3308.err
[root@node5 ~]# vim /etc/my.cnf
[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
pass       = MySQL@123

#官方password有BUG
[mysqld3306]
socket     = /data/3306/mysql.sock
port       = 3306
pid-file   = /data/3306/mysqld.pid
datadir    = /data/3306/data
log-error  = /data/3306/mysql_3306.err

[mysqld3307]
socket     = /data/3307/mysql.sock
port       = 3307
pid-file   = /data/3307/mysqld.pid
datadir    = /data/3307/data
log-error  = /data/3307/mysql_3307.err

[mysqld3308]
socket     = /data/3308/mysql.sock
port       = 3308
pid-file   = /data/3308/mysqld.pid
datadir    = /data/3308/data
log-error  = /data/3308/mysql_3308.err

!includedir /etc/my.cnf.d

② 修改MySQL多实例的文件权限

[root@node5 ~]# chown -R mysql.mysql /data/330{6..8}/

③ 配置mysql环境变量

[root@node5 ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
[root@node5 ~]# source /etc/profile.d/mysql.sh

④ 初始化多实例

[root@node5 ~]# mysqld --initialize --datadir=/data/3306/data --basedir=/usr/local/mysql --user=mysql
...
2022-03-29T12:51:20.868470Z 1 [Note] A temporary password is generated for root@localhost: T#lhk6Yu5!q%
[root@node5 ~]# mysqld --initialize --datadir=/data/3307/data --basedir=/usr/local/mysql --user=mysql
...
2022-03-29T12:51:50.476617Z 1 [Note] A temporary password is generated for root@localhost: iSKodkuwY2_Q
[root@node5 ~]# mysqld --initialize --datadir=/data/3308/data --basedir=/usr/local/mysql --user=mysql
...
2022-03-29T12:52:21.663797Z 1 [Note] A temporary password is generated for root@localhost: CBdoy_&ol3xs

⑤ 启动多实例

[root@node5 ~]# mysqld_multi start 3306-3308
[root@node5 ~]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running
MySQL server from group: mysqld3308 is running

⑥ 授权用户

[root@node5 ~]# mysql -uroot -p'MySQL@123' -S /data/3306/mysql.sock -e "GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'MySQL@123'"
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@node5 ~]# mysql -uroot -p'MySQL@123' -S /data/3307/mysql.sock -e "GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'MySQL@123'"
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@node5 ~]#  mysql -uroot -p'MySQL@123' -S /data/3308/mysql.sock -e "GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'MySQL@123'"
mysql: [Warning] Using a password on the command line interface can be insecure.

⑦ 登录多实例

[root@node5 ~]#  mysql -uroot -p'MySQL@123' -S /data/3306/mysql.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, 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>

⑧ 停止多实例

[root@node5 ~]# mysqld_multi stop 3306-3308
[root@node5 ~]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is not running
MySQL server from group: mysqld3307 is not running
MySQL server from group: mysqld3308 is not running
举报

相关推荐

0 条评论