Linux下MySQL 5.7.x版本单实例+多实例部署

2021年3月14日 20点热度 0条评论 来源: voaycc

本实例在 CentOS 7.6, 所用版本为 MySQL 5.7.24

1、下载mysql,去官网下载;
https://dev.mysql.com/downloads/file/?id=481117
2、检查Linux是否安装了mariadb数据库,mariadb数据库是mysql的分支,执行命令:

yum list installed | grep mariadb 

如果Linux中安装了mariadb数据库,先卸载掉,
因为mariadb数据库与安装mysql会发生冲突,
执行命令:

yum -y remove mariadb-libs.x86_64


3、安装
(1)、解压下载下来的mysql软件压缩包,业界习惯应用放到/usr/local,执行命令:

tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

(2)、将解压后的mysql-5.7.24-linux-glibc2.12-x86_64改名为mysql-5.7.24 ,为了名称简短,建议就用mysql-5.7.24, 这样后面命令可以直接使用

mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql-5.7.24

(3)、在mysql-5.7.24文件夹目录下创建一个/data/3306文件夹,切换到mysql-5.7.24目录,执行命令;3306名称可以随意,不过保证一致,后面的命令都可以直接参考。

cd mysql-5.7.24/
mkdir data
cd data/
mkdir 3306

(4)、添加mysql用户及用户组,执行命令:

groupadd mysql
useradd mysql -g mysql

-g: 是指定用户所在组

(5)、切换到mysql-5.7.24/bin目录下执行:

cd /usr/local/mysql-5.7.24/bin/
./mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql-5.7.24/data/3306 --basedir=/usr/local/mysql-5.7.24

其中 --initialize-insecure 表示不生成临时密码

该命令会在/usr/local/mysql-5.7.24/data/3306生成以下文件

(6)、在mysql-5.7.24/bin目录下执行命令:

./mysql_ssl_rsa_setup --datadir=/usr/local/mysql-5.7.24/data/3306

7、更改mysql-5.7.24整个文件夹目录权限所属,执行命令:

chown -R mysql:mysql /usr/local/mysql-5.7.24

配置:
8、在mysql-5.7.24/data/3306 目录下创建my.cnf文件;

cd /usr/local/mysql-5.7.24/data/3306
vim my.cnf

写入如下基础配置

[client]
port        = 3306
socket      = /usr/local/mysql-5.7.24/data/3306/mysql.sock
default-character-set=utf8mb4

[mysqld]
port    = 3306
socket  = /usr/local/mysql-5.7.24/data/3306/mysql.sock
datadir = /usr/local/mysql-5.7.24/data/3306
log-error = /usr/local/mysql-5.7.24/data/3306/error.log
pid-file = /usr/local/mysql-5.7.24/data/3306/mysql.pid

character-set-server=utf8mb4
lower_case_table_names=1
autocommit = 1

至此MySQL安装完成;
启动MySQL服务
在mysql-5.7.24/bin目录下执行命令:

cd /usr/local/mysql-5.7.24/bin
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3306/my.cnf &

(其中 & 符号表示后台启动)

不过此时,Mysql数据库没有设置root密码的,远程也无法进行连接,接下来继续操作。

修改密码

1、登录进入mysql,在mysql-5.7.18/bin目录下执行命令:

./mysql -uroot -p -P3306 -h127.0.0.1

3306代表的是端口

提示输入密码,直接回车,因为上面生成配置文件时,没有生成密码,进入mysql环境

2、修改mysql的密码,执行:

alter user 'root'@'localhost' identified by 'root';

(其中by后的 root 是我们设置的密码)

远程访问
1、授权远程访问,执行命令:(这样远程客户端才能访问)

grant all privileges on *.* to root@'%' identified by 'root';

其中*.* 的第一个表示所有数据库名,第二个表示所有的数据库表;
root@’%’ 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,
比如root@localhost,root@192.168.10.130

2、执行以下如下命令刷新权限:

flush privileges; 

3、如果上面授权远程访问执行之后依然远程连接不上mysql,可能是Linux上防火墙拦截了,可以将防火墙先关闭;

关闭防火墙命令:

systemctl status firewalld.service     查看防火墙状态
systemctl stop firewalld.service     本次访问关闭防火墙
systemctl disable firewalld.service   从下次开始关闭防火墙
systemctl enable firewalld.service   打开防火墙

在实际公司里面不要这么做,而是只开通需要暴露的端口就好了。
不过我们自己测试为了方便可以直接关闭;

防火墙开放端口命令:

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

重新加载防火墙配置:

firewall-cmd --reload

重启防火墙:

systemctl restart firewalld

命令含义:
–zone #作用域:查看当前的区域:firewall-cmd --get-default-zone
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

取消端口开放:

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

查询端口号8080 是否开启:

firewall-cmd --query-port=8080/tcp

查询有哪些端口是开启的:

firewall-cmd --list-port

关闭MySQL服务,在mysql-5.7.24/bin目录下执行:

./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown

至此,已经搭建好一个MYSQL,如果还想继续搭建多个MySQL,那就继续

1、在MySQL安装主目录下创建 /data/4406目录;

cd /usr/local//mysql-5.7.24/data
mkdir 4406

2、执行数据库初始化,在MySQL的/usr/local/mysql-5.7.24/bin目录下执行命令:

cd /usr/local/mysql-5.7.24/bin/
./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.24 --datadir=/usr/local/mysql-5.7.24/data/4406 --user=mysql

其中 initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空;

3、在/data/4406目录下创建一个my.cnf文件;

cd /usr/local/mysql-5.7.24/data/4406
vim my.cnf

4、配置MySQL数据库服务的my.cnf文件

[client]
port        = 4406
socket      = /usr/local/mysql-5.7.24/data/4406/mysql.sock
default-character-set=utf8mb4

[mysqld]
port    = 4406
socket  = /usr/local/mysql-5.7.24/data/4406/mysql.sock
datadir = /usr/local/mysql-5.7.24/data/4406
log-error = /usr/local/mysql-5.7.24/data/4406/error.log
pid-file = /usr/local/mysql-5.7.24/data/4406/mysql.pid

character-set-server=utf8mb4
lower_case_table_names=1
autocommit = 1

至此在同一台Linux上就搭建了第二个数据库实例;
在一个linux上,只需要安装一份mysql程序,但是可以部署多个mysql服务实例;

启动第二个MySQL服务
切换到/usr/local/mysql-5.7.24/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:

cd /usr/local/mysql-5.7.24/bin
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/4406/my.cnf &

其中 --defaults-file 是指定配置文件,& 符合表示后台启动;

1、登录进入mysql,在mysql-5.7.24/bin目录下执行命令:

 ./mysql -uroot -p -P4406 -h127.0.0.1 

2、修改mysql的密码,执行:

alter user 'root'@'localhost' identified by 'root';

(其中root是我们设置的密码)

3、授权远程访问,执行命令:(这样远程客户端才能访问)

grant all privileges on *.* to root@'%' identified by 'root';

4、执行以下如下命令刷新权限:

flush privileges; 

如果为了平时操作方便,可以把mysql的命令加入到path下:

    原文作者:voaycc
    原文地址: https://blog.csdn.net/qq_26412535/article/details/114800907
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。