linux--mysql8多实例(多配置文件,单配置文件)

Mysql多实例实现的3种方式

 

目录

Mysql多实例实现的3种方式

1.基于多配置文件

1.官网下载:

2.下载:

3.解压

4. 移动压缩包到usr/local目录下,并重命名文件

5. 创建mysql账户

6. 对mysql下所有的文件授权给mysql用户

7. 给mysql用户进行授权

8. 切换成mysql用户

9. 进入mysql文件夹,进行初始化

2.基于mysqld_multi

1.创建多实例数据目录

2.配置Mysql的配

置文件/etc/my.cnf

3.初始化各个实例

4.开启各实例的SSL连接

5.复制多实例脚本到服务管理目录下

6. 添加环境变量

7.测试实例

8.  连接实例

9.允许远程连接mysql

10.关闭实例

11.忘记密码



1.基于多配置文件

通过使用多个配置文件来启动不同的进程,以此来实现多实例。

优点:逻辑简单,配置简单

缺点:管理起来不方便

1.官网下载:

https://dev.mysql.com/downloads/mysql/

2.下载:

wget –O mysql8  -P /opt https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz

3.解压

tar –xvf mysql8

4. 移动压缩包到usr/local目录下,并重命名文件

mv /opt/mysql-8.0.25-linux-glibc2.12-i686/    /opt/mysql8

ls  /usr/local/mysql

5. 创建mysql账户

       groupadd mysql

useradd -g mysql mysql

6. 对mysql下所有的文件授权给mysql用户

       cd /usr/local/mysql

chown -R mysql:mysql ./

7. 给mysql用户进行授权

visudo /etc/sudoers

sed -i '/^root/amysql ALL=(ALL) ALL' /etc/sudoers

sed -n '/^root/,+1p'  /etc/sudoers

8. 切换成mysql用户

       su mysql

注:This account is currently not available.

用户的shell禁止登录了

cat /etc/passwd | grep mysq

发现它的shell是“/sbin /nologin”,需要将起改成“/bin/bash”

或者删除用户和用户组,新建

userdel -r mysql 

groupdel mysql

    

9. 进入mysql文件夹,进行初始化

       cd /opt/mysql3306

1.把etc目录下的my.cnf复制到mysql文件夹下,并且更改名为my.cnf.backup

       cp /etc/my.cnf /usr/local/mysql

mv /etc/my.cnf /etc/my.cnf.backup

2.进入mysql文件夹下对my.cnf进行配置修改

       vi my.cnf

[mysqld]

 ### 端口号

 port=3306

 ### 安装目录

 basedir=/opt/mysql3306

 ### 数据存放路径

 datadir=/opt/mysql3306/data/

 ### 会话文件目录

 socket=/opt/mysql3306/mysql.sock

 # 允许连接失败的最大次数

 max_connect_errors=20

 # 服务端的字符集编码

 character-set-server=utf8

 # 默认存储引擎

 default-storage-engine=INNODB

 # 默认用户

 user=root

 # 开启慢查询

 slow_query_log=on

 # 慢查询日志文件目录

slow_query_log_file=/opt/mysql3306/slow-query.log

[client]

 ### 连接服务端使用的端口号

### 会话文件

socket=/opt/mysql3306/mysql.sock

 # 默认字符集编码

 default-character-set=utf8

3.修改自带的默认配置

vim ./support-files/mysql.server

# 将文件中的所有有关basedir和datadir的配置全部修改为当前的路径

# 修改support-files文件夹下的mysqld_multi.server文件

 vim ./support-files/mysqld_multi.server

4.初始化

cp –r /opt/mysql8  /opt/mysql3306

cp –r /opt/mysql8  /opt/mysql3307

mkdir /opt/mysql3306/data

mkdir /opt/mysql3306/data

cp /etc/my.cnf  /opt/mysql3306

cp /etc/my.cnf  /opt/mysql3307

./bin/mysqld --defaults-file=/opt/mysql3306/my.cnf  --initialize --console --user=root

初始化失败:./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方法:

yum install -y libaio  //安装后在初始化就OK

检查data文件夹是否为空

5. 启动服务

./bin/mysqld_safe --defaults-file=./my.cnf &

注:

查看my.cnf的权限

权限777,任何一个用户都可以改my.cnf,存在很大的安全隐患.

chmod 644 /etc/my.cnf

my.cnf设置为用户可读写,其他用户不可写.

6.登录

./bin/mysql --socket=./mysql.sock -uroot  -p

2.基于mysqld_multi

通过官方自带的 mysqld_multi 工具,使用单独配置文件来实现多实例

优点: 便于集中管理管理

缺点: 不方便针对每个实例配置进行定制

Mysql多实例即一台服务器上运行多个Mysql服务进程 ,开启不同的服务端口,通过不同的socket 监听不同的服务端口来提供各自的服务

1.创建多实例数据目录

       mkdir -p /data/mysql_data{1..2}

2.配置Mysql的配

置文件/etc/my.cnf

[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld

mysqladmin = /usr/local/mysql/bin/mysqladmin

log = /tmp/mysql_multi.log

[mysqld1]

datadir = /data/mysql_data1       #设置数据目录

socket = /data/mysql.sock1         #设置sock文件存放路径

port = 3306                      #设置监听开放端口

user = mysql                           #设置运行用户

performance_schema = off          #关闭监控

innodb_buffer_pool_size = 32M         #设置innodb 缓存大小

bind_address = 0.0.0.0                  #设置监听IP地址

skip-name-resolve = 0                 #关闭DNS反向解析

3.初始化各个实例

初始化完后会在日志中生成密码,记得保存,一会要用

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data1

4.开启各实例的SSL连接

/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data1

5.复制多实例脚本到服务管理目录下

       cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi

给予脚本可执行权限: chmod +x /etc/init.d/mysqld_multi

加入service服务管理:  chkconfig --add mysqld_multi

6. 添加环境变量

     vim /etc/profile

      export MYSQL_HOME=/usr/local/mysql

      export PATH=${MYSQL_HOME}/bin:$PATH

使修改的配置文件生效:source /etc/profile

7.测试实例

       查看多个实例状态:mysqld_multi report

      启动各个实例   mysqld_multi start

查看实例的监听端口: ss -tulpn|grep mysqld

8.  连接实例

mysql -S /tmp/mysql.sock1 -p前面生成的密码

进去后修改root密码: set password=password('123456');

flush privileges;

9.允许远程连接mysql

mysql8以前版本:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH PRIVILEGES;

mysql8版本:

CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';

GRANT ALL ON *.* TO 'root'@'%';

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

FLUSH PRIVILEGES;

10.关闭实例

1. 直接使用mysqld_multi来关闭实例

使用mysqld_multi关闭多实例数据库目前来看比较麻烦,需要在my.cnf文件的[mysqld_multi]模块里面配置用户密码,并且各个数据库的用户密码都需要相同,否则无法关闭。

当执行:mysqld_multi stopt时,mysqld_multi会调用mysqladmin去关闭数据库,使用的是[mysqld_multi]里面配置的账号密码,此时3306的密码是正确的

mysqld_multi stop 3306

2. 使用mysqladmin来关闭实例

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

11.忘记密码

1. killall mysqld     //杀死msyqld进程,可以多尝试几次

2. mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table & //跳过授权表 后面直接多几个回车

       --defaults-file   按实际填写

3.确认程序  ss -antlup | grep 330

4. mysql -uroot -S /data/3306/mysql.sock  //登录数据库,不需要输入密码  直接就可以登陆了

5.修改密码

 mysql> show databases;

mysql> select user,host,password from mysql.user;

mysql>  UPDATE mysql.user SET password = PASSWORD('new password') WHERE user = 'root'

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值