CentOS7之mysql多实例

Posted 丶旋律

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7之mysql多实例相关的知识,希望对你有一定的参考价值。

环境准备,一台CentOS7

安装软件

[root@localhost ~]# yum install mariadb-server -y

创建三个实例的目录

[root@localhost ~]# mkdir /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid} -p

改所属主,组

[root@localhost ~]# chown -R mysql.mysql /mysql

生成数据库文件

[root@localhost ~]# mysql_install_db --user=mysql --datadir=/mysql/3306/data
[root@localhost ~]# mysql_install_db --user=mysql --datadir=/mysql/3307/data
[root@localhost ~]# mysql_install_db --user=mysql --datadir=/mysql/3308/data

准备配置文件

# 3306
[root@localhost ~]# vim /mysql/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/mysql/3306/data
socket=/mysql/3306/socket/mysql.sock
log-error=/mysql/3306/log/mysql.log
pid-file=/mysql/3306/pid/mysql.pid

# 3307
[root@localhost ~]# sed 's/3306/3307/' /mysql/3306/etc/my.cnf > /mysql/3307/etc/my.cnf

# 3308
[root@localhost ~]# sed 's/3306/3308/' /mysql/3306/etc/my.cnf > /mysql/3308/etc/my.cnf

编写启动关闭脚本

[root@localhost ~]# vim /mysql/3306/bin/mysqld
#!/bin/bash
# date: 2021-05-12
# autho: xuanlv

port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

start_mysql(){
    if [ ! -e "$mysql_sock" ];then
       printf "Starting MySQL...\\n"
       ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
    else
       printf "MySQL is running...\\n"
       exit
    fi
}
stop_mysql(){
    if [ ! -e "$mysql_sock" ];then
       printf "MySQL is stopped...\\n"
       exit
    else
       printf "Stoping MySQL...\\n"
       ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
    fi
}
restart_mysql(){
    printf "Restarting MySQL...\\n"
    stop_mysql
    sleep 2
    start_mysql
}

case $1 in
start)
    start_mysql
    ;;
stop)
    stop_mysql
    ;;
restart)
    restart_mysql
    ;;
*)
    printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\\n"
esac

授权

[root@localhost ~]# chmod +x /mysql/3306/bin/mysqld

拷贝成剩下两个实例启动脚本,记住3307,3308脚本端口一定要改

[root@localhost ~]# cp /mysql/3306/bin/mysqld /mysql/3307/bin/mysqld
[root@localhost ~]# cp /mysql/3306/bin/mysqld /mysql/3308/bin/mysqld

启动脚本

[root@localhost ~]# /mysql/3306/bin/mysqld start
[root@localhost ~]# /mysql/3307/bin/mysqld start
[root@localhost ~]# /mysql/3308/bin/mysqld start

查看端口3306,3307,3308

[root@localhost ~]# ss -tan
State       Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN      0      50                            *:3306                                      *:*                  
LISTEN      0      50                            *:3307                                      *:*                  
LISTEN      0      50                            *:3308                                      *:*                  
LISTEN      0      128                           *:22                                        *:*    

测试登陆

[root@localhost ~]# mysql -h127.0.0.1 -P3307
Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MariaDB connection id is 1
Server version: 5.5.68-MariaDB MariaDB Server

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

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

MariaDB [(none)]> 

查看当前端口

MariaDB [(none)]> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3307  |
+---------------+-------+
1 row in set (0.00 sec)

MariaDB [(none)]>

修改root密码

[root@localhost ~]# mysqladmin -uroot -S /mysql/3306/socket/mysql.sock password '123456'
[root@localhost ~]# mysqladmin -uroot -S /mysql/3307/socket/mysql.sock password '123456'
[root@localhost ~]# mysqladmin -uroot -S /mysql/3308/socket/mysql.sock password '123456'

测试修改的密码

[root@localhost ~]# mysql -uroot -h127.0.0.1 -P3306
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]# mysql -uroot -h127.0.0.1 -p123456 -P3306
Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MariaDB connection id is 7
Server version: 5.5.68-MariaDB MariaDB Server

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

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

MariaDB [(none)]>

关闭mysql

[root@localhost ~]# /mysql/3306/bin/mysqld stop
[root@localhost ~]# /mysql/3307/bin/mysqld stop
[root@localhost ~]# /mysql/3308/bin/mysqld stop

目前使用的查看字符集

MariaDB [(none)]> show variables like 'charact%';

改字符集

[root@localhost ~]# vim /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8mb4

以上是关于CentOS7之mysql多实例的主要内容,如果未能解决你的问题,请参考以下文章

多实例:MySQL系列之二

CentOS7.5源码安装MySQL5.7.28多实例

CentOS7.7下二进制部署MySQL多版本多实例实战

一台centos7.5主机实现多实例mysql

centos7 安装mysql 5.7多实例

centos7下创建mysql5.6多实例