linux安装mysql5.7.30_linux安装mysql5.7.30 及配置多实例

本文详细介绍了如何在CentOS7上安装MySQL5.7.30,包括卸载Mariadb、解压安装包、配置环境变量、初始化数据库、设置配置文件、启动数据库及通过sys-v和systemd方式管理服务。同时,文章还展示了如何配置多实例,创建不同端口的MySQL服务,并进行权限设置和验证。
摘要由CSDN通过智能技术生成

1. 安装包下载,准备环境

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz# 创建以下目录,(目录位置自定义,无强制)

软件路径: /opt/mysql/数据路径:/data/mysql/data/

二进制路径:/data/mysql/binlog/

通讯路径:/tmp/mysql/用来在数据库启动的时候在该目录生成sock文件

chown-R mysql.mysql /opt/mysql

chown-R mysql.mysql /tmp/mysql

chown-R mysql.mysql /data/*

centos7上安装mysql之前,先把系统自带的mariadb卸载掉

yum remove mariadb-libs

2. 解压二进制包,配置环境变量

tar zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.7.30-linux-glibc2.12-x86_64/* /opt/mysql/

vim /etc/profile

export PATH=/opt/mysql/bin:$PATH

source /etc/profile

3. 数据库初始化

mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql/data

参数:--initialize-insecure 不使用mysql的密码策略,无临时密码--user 指定用户--basedir 指定软件路径--datadir 指定数据路径

初始化操作会在指定的数据目录下生成mysql系统的依赖文件

4. 配置文件

vim /etc/my.cnf  # mysql会自动加载该目录下的配置文件

[mysqld]

basedir=/opt/mysql

datadir=/data/mysql/data

server_id=10user=mysql

log_bin=/data/mysql/binlog/mysql-bin # mysql-bin是指定的二进制文件前缀

binlog_format=row            # 配置binlog以RBR模式记录

socket=/tmp/mysql/mysql.sock # 会在数据库启动的时候在该目录生成sock文件,关闭数据库后即消失

[client]

socket=/tmp/mysql/mysql.sock

4.1 mysql启动时都会去哪些路径找配置文件呢?

# 可以在mysqld的帮助信息中找到相关说明,如下

[root@db01 ~]# mysqld --help --verbose |grep my.cnf/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

注:

默认情况下,MySQL启动时,会依次读取以上配置文件,如果有重复选项,会以最后一个文件设置的为准。

但是,如果启动时加入了--defaults-file=xxxx时,以上的所有文件都不会读取.

5. 数据库启动

1. 启动方式一

使用mysql软件目录下support-files/mysql.server 即可启停,就是有些麻烦

/opt/mysql/support-files/mysql.server start/stop

2. 启动方式二

使用mysql软件目录/bin/mysql_safe来启动

启动:mysql_safe &

停止:mysqladmin -uroot -p shutdown

3. 启动方式三

使用mysql软件目录/bin/mysqld来启动

启动:/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf

该方式会把启动日志输出到屏幕,适用于数据库异常时,连日志都写入不了的场景。

4. mysql的维护模式

mysql_safe --skip-grant-tables --skip-networking &

5. 使用sys-v方式。

cp support-files/mysql.server /etc/init.d/mysqldd

启动/停止: service mysqldd start/stop 或者 /etc/init.d/mysqldd start/stop

6. 使用systemctl方式。

cat /etc/systemd/system/mysqld.service  创建个mysqld.service文件

[Unit]

Description=MySQL Server

Documentation=man:mysqld(8)

Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html

After=network.target

After=syslog.target

[Install]

WantedBy=multi-user.target

[Service]

User=mysql

Group=mysql

LimitNOFILE = 10000

ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf         # 修改这里,其它都是固定的

配置完成即可使用:systemctl start/stop mysqld

5.1 各启动方式对比

1. sys-v方式只能实现简单的start, stop, restart操作,不能在命令行添加参数

该方式的调用过程: 这个脚本会调用软件目录下的bin/mysql_safe, 然后会调用bin/mysqld来完成。

2. systemctl方式也只能实现简单的启停操作。

该方式的调用过程: 直接使用软件目录下bin/mysqld + 指定配置文件来启动的。

3. 维护模式的启停

mysql_safe --skip-grant-tables --skip-networking &  可使用命令行参数的形式启动,能处理特殊模式的启动操作

该方式虽然也会加载/etc/my.cnf配置文件,但是如果命令行中有和配置文件中同样的参数,会以命令行的为准。

补充:1,2,3都会去加载/etc/my.cnf配置文件的内容,但是3更灵活,能在命令行中加入需要的参数来改变启动模式

5.2 启动后配置远程登陆

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root'flush privileges;

6. 初始化时使用的是无密码初始化

数据库启动后可使用mysql提供的mysqladmin来设置管理员密码或修改管理员密码(root)/opt/mysql/bin/mysqladmin -uroot -p password 密码

当然加了环境变量后可直接使用: mysqladmin-uroot -p password 密码

mysqladmin命令设置密码和修改密码命令一样,只不过用来修改密码时第一次需要数据老密码。

7. 管理员密码忘记了?

9a71608782e46c63058d6c8d9af70c1e.png

跳过授权表,禁用远程模式启动后,使用原来的grant或alter命令来修改密码肯定不行,因为我们启动的模式说白了就是不加载授权表,肯定也不能对授权表进行操作了。

此时可使用flush privileges;来重新加载授权表, 然后再使用grant或alter命令来设定密码即可。

授权表即mysql库中的user表

8. 配置mysql多实例

8.1 准备多个目录

mkdir -p /data/330{7,8,9}/{data,binlog}

8.2 准备配置文件

cat > /data/3307/my.cnf <

[mysqld]

basedir=/opt/mysql/datadir=/data/3307/data/socket=/data/3307/mysql.sock

log_error=/data/3307/mysql.log

port=3307server_id=7log_bin=/data/3307/binlog/mysql-bin

binlog_format=row

EOF

cat> /data/3308/my.cnf <

[mysqld]

basedir=/opt/mysql/datadir=/data/3308/data/socket=/data/3308/mysql.sock

log_error=/data/3308/mysql.log

port=3308server_id=8log_bin=/data/3308/binlog/mysql-bin

binlog_format=row

EOF

cat> /data/3309/my.cnf <

[mysqld]

basedir=/opt/mysql/datadir=/data/3309/data/socket=/data/3309/mysql.sock

log_error=/data/3309/mysql.log

port=3309server_id=9log_bin=/data/3309/binlog/mysql-bin

binlog_format=row

EOF

8.3 初始化三套数据

cp /etc/my.cnf /etc/my.cnf.bak

mysqld--initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/opt/mysql

mysqld--initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/opt/mysql

mysqld--initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/opt/mysql

8.4 systemd管理多实例

cd /etc/systemd/system

cp mysqld.service mysqld3307.service

cp mysqld.service mysqld3308.service

cp mysqld.service mysqld3309.service

vim mysqld3307.service

ExecStart=/opt/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf

vim mysqld3308.service

ExecStart=/opt/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf

vim mysqld3309.service

ExecStart=/opt/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf

8.5 授权并启动服务

chown -R mysql.mysql /data/*systemctl start mysqld3307.service

systemctl start mysqld3308.service

systemctl start mysqld3309.service

8.6 验证多实例

netstat -lnp|grep 330mysql-S /data/3307/mysql.sock -e "select @@server_id"mysql-S /data/3308/mysql.sock -e "select @@server_id"mysql-S /data/3309/mysql.sock -e "select @@server_id"

8.7 多实例总结:

1. 多实例的原理:

定义多个数据目录和多个配置文件,初始化时使用同一个软件,但是数据目录不同,会在指定的不同目录下分别生成mysql依赖的系统文件。

配置使用systemctl来管理各实例时,本质是给软件目录/bin/mysqld指定了不同的my.cnf配置文件。这就使得在启动不同实例时会加载不同的配置文件。

2. 多实例的连接:

mysql server的连接有两种方式:

1. tcp/ip的连接,即: mysql -uroot -p -h127.0.0.1 -P3306

2. 本地socket连接,即:mysql -S /socket文件的路径。(只能在本机使用)

本机启动了多个实例,每个实例的socket文件地址都不一样,可以使用socket方式连接对应的实例。也可使用指定端口的方式去连接不同的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值