MySQL版本区别及管理
MySQL5.6与MySQL5.7安装的区别
1.5.7编译需要下载boost
2.5.7的编译参数
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.38\
-DMYSQL_DATADIR=/application/mysql-5.7.38/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.7.38/tmp/mysql.sock \
-DDOWNLOAD_BOOST=1 \ ## mysql-5.7.38.tar.gz没有boost需要添加该参数
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
3.初始化
5.6的命令:mysql_install_db
5.7的命令:mysqld --initialize # 有初始密码
mysqld --initialize-insecure # 没有初始密码
yum安装MySQL
1.下载MySQL的yum源
wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
2.安装MySQL的yum源
rpm -ivh mysql80-community-release-el7-6.noarch.rpm
3.修改yum源里的版本
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch
enabled=1 # 将0改成1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
4.安装mysql-5.7.38版本
yum install -y mysql-community-server-5.7.38
5.启动mysql
systemctl start mysqld
6.查看日志查找mysql初始密码
[root@db03 ~]# grep 'root' /var/log/mysqld.log
2022-08-04T06:57:44.565807Z 1 [Note] A temporary password is generated for root@localhost: DBa4Vs7>##o?
7.登录mysql
[root@db03 ~]# mysql -uroot -p'DBa4Vs7>##o?'
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.38
8.修改配置文件让MySQL使用简单密码
vim /etc/my.cnf
validate_password_length=1
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0
9.重新启动mysql
systemctl restart mysqld
10.修改密码
mysql> alter user root@'localhost' identified by '123';
MySQL用户权限管理
MySQL用户操作
MySQL用户的作用:
1.登录MySQL数据库
2.管理数据库对象
MySQL中用户的定义
在MySQL中,用户不仅仅是用户名,它需要加上主机域才是一个用户,例:用户名@'主机域'
主机域的编写:
localhost
127.0.0.1
%
10.0.0.%
10.0.%.%
10.%.%.%
10.0.0.5%
db01(不能直接连,需要做解析)
10.0.0.0/255.255.255.0
用户管理
增
# 5.6创建用户
mysql> create user jl@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> create user jl1@'localhost' identified by '123';
# 5.7创建用户(必须要给密码)
mysql> create user jl@'localhost' identified by '123';
mysql> grant all on *.* to jl1@'localhost' identified by '123';
# 以前的5.7版本不支持grant在用户不存在的情况下执行,现在版本可以
grant:授权命令
all==all privileges:所有权限,不包括授权权限
# 如果要加授权命令要在密码后面加 with grant option
# grant all on *.* to root@'localhost' identified by '123' with grant option;
*.*:所有库,下面所有表
jl1@'localhost':完整用户
identified by '123':密码123
删
mysql> drop user jl@'localhost'; # 相当于linux userdel -r 删除用户
mysql> delete from mysql.user where user='jl1' and host='localhost'; # 相当于linux 直接在/etc/passwd中删除
改
# 改权限
# 添加权限
mysql> grant update on *.* to jl@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for jl@'localhost';
+-----------------------------------------+
| Grants for jl@localhost |
+-----------------------------------------+
| GRANT UPDATE ON *.* TO 'jl'@'localhost' |
+-----------------------------------------+
1 row in set (0.00 sec)
# 回收权限
mysql> revoke update on *.* from jl@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for jl@'localhost';
+----------------------------------------+
| Grants for jl@localhost |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'jl'@'localhost' |
+----------------------------------------+
1 row in set (0.00 sec)
# 改密码
1.
[root@db02 ~]# mysqladmin -uroot -p password '456'
2. 只能修改当前连接的用户密码
mysql> set password=PASSWORD('123');
Query OK, 0 rows affected (0.00 sec)
3.
mysql> grant all on *.* to root@'localhost' identified by '456';
Query OK, 0 rows affected (0.01 sec)
4.
alter user root@'localhost' identified by '123';
5.只有使用update修改密码时,才需要执行flush privilege
5.6:
mysql> update mysql.user set password=PASSWORD('123') where user='root' and host='localhost';
mysql> flush privileges
5.7:
mysql> update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';
mysql> flush privileges;
查
# 查看所有用户
mysql> select * from mysql.user\G
# 查看指定字段
mysql> select user,host from mysql.user;
# 查看用户的权限
mysql> show grants for root@'localhost';
忘记root密码解决方式
1.先停掉数据库
[root@db03 ~]# systemctl stop mysqld.service
2.重新启动mysql
[root@db03 ~]# mysqld --user=mysql --skip-grant-tables &
3.重新连接数据库
mysql
4.修改密码
mysql> update mysql.user set authentication_string=PASSWORD('456') where user='root' and host='localhost';
mysql> flush privileges;
5.重启mysql
用户的权限
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE,update
# 常用权限:INSERT,SELECT,UPDATE,DELETE
作用对象分解
*.*:当前MySQL实例中所有库下的所有表
wordpress.*:当前MySQL实例中wordpress库中所有的表(单库级别)
wordpress.user:当前MySQL实例中wordpress库中的user表(单表级别)
grant select(user,host) on mysql.user to test@'%' identified by '123'; : 单字段级别
权限小练习
#创建wordpress数据库
create database wordpress;
#使用wordpress库
use wordpress;
#创建t1、t2表
create table t1 (id int);
create table t2 (id int);
#创建blog库
create database blog;
#使用blog库
use blog;
#创建t1表
create table tb1 (id int);
wordpress库
- t1表
- t2表
blog库
- tb1表
# 给wordpress@'10.0.0.5%'用户查看所有库下的所有表权限,密码是123
grant select on *.* to wordpress@'10.0.0.5%' identified by '123';
# 给wordpress@'10.0.0.5%'用户wordpress库下的所有表insert,delete,update权限,密码是123
grant insert,delete,update on wordpress.* to wordpress@'10.0.0.5%' identified by '123';
# 给wordpress@'10.0.0.5%'用户wordpress库下的t1表所有的权限,密码是123
grant all on wordpress.t1 to wordpress@'10.0.0.5%' identified by '123';
问:
一个客户端程序使用wordpress用户登陆到10.0.0.51的MySQL后,
1、对t1表的管理能力? # 所有权限
2、对t2表的管理能力? # select,insert,delete,update权限
3、对tb1表的管理能力? # select权限
MySQL多实例
单实例:一个后台进程+多个线程+一个预分配的内存结构
多实例:多个后台进程+多个线程+多个预分配的内存结构
多实例需要:
多个配置文件
多个端口
data目录
socket文件
日志文件
pid文件
多个启动脚本
5.6的多实例
1.先创建data目录
[root@db02 ~]# mkdir -p /data/330{7..9}
2.准备多个配置文件
[root@m01 ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/data/3307.sock
log_error=/data/3307/data/3307.err
pid_file=/data/3307/data/3307.pid
port=3307
[root@m01 ~]# vim /data/3308/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/data/3308.sock
log_error=/data/3308/data/3308.err
pid_file=/data/3308/data/3308.pid
port=3308
[root@m01 ~]# vim /data/3309/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/data/3309.sock
log_error=/data/3309/data/3309.err
pid_file=/data/3309/data/3309.pid
port=3309
3.初始化
[root@db02 ~]# cd /application/mysql/scripts/
[root@db02 scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/application/mysql --datadir=/data/3307/data
[root@db02 scripts]# ./mysql_install_db --defaults-file=/data/3308/my.cnf --user=mysql --basedir=/application/mysql --datadir=/data/3308/data
[root@db02 scripts]# ./mysql_install_db --defaults-file=/data/3309/my.cnf --user=mysql --basedir=/application/mysql --datadir=/data/3309/data
4.启动
[root@db02 scripts]# mysqld --defaults-file=/data/3307/my.cnf --user=mysql &
[root@db02 scripts]# mysqld --defaults-file=/data/3308/my.cnf --user=mysql &
[root@db02 scripts]# mysqld --defaults-file=/data/3309/my.cnf --user=mysql &
5.连接
[root@db02 scripts]# mysql -uroot -p -S /data/3307/data/3307.sock
[root@db02 scripts]# mysql -uroot -p -S /data/3308/data/3308.sock
[root@db02 scripts]# mysql -uroot -p -S /data/3309/data/3309.sock
6.连接小技巧
[root@db02 scripts]# vim /usr/bin/mysql3307
mysql -uroot -p -S /data/3307/data/3307.sock
[root@db02 scripts]# chmod +x /usr/bin/mysql3307
[root@db02 scripts]# mysql3307
作业
# 使用MySQL5.7做多实例
1.创建数据目录
[root@db03 ~]# mkdir -p /data/330{7..9}
2.准备多个配置文件
[root@db03 ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/data/3307/data
socket=/data/3307/data/mysql.sock
symbolic-links=0
log-error=/data/3307/data/3307.log
pid-file=/data/3307/data/3307.pid
port=3307
[root@db03 ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/data/3308/data
socket=/data/3308/data/mysql.sock
symbolic-links=0
log-error=/data/3308/data/3308.log
pid-file=/data/3308/data/3308.pid
port=3307
[root@db03 ~]# vim /data/3309/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/data/3309/data
socket=/data/3309/data/mysql.sock
symbolic-links=0
log-error=/data/3309/data/3309.log
pid-file=/data/3309/data/3309.pid
port=3309
3.初始化
[root@db03 sbin]# ./mysqld --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/var/lib/mysql --datadir=/data/3307/data --initialize-insecure
[root@db03 sbin]# ./mysqld --defaults-file=/data/3308/my.cnf --user=mysql --basedir=/var/lib/mysql --datadir=/data/3308/data --initialize-insecure
[root@db03 sbin]# ./mysqld --defaults-file=/data/3309/my.cnf --user=mysql --basedir=/var/lib/mysql --datadir=/data/3309/data --initialize-insecure
4.启动
[root@db03 sbin]# mysqld --defaults-file=/data/3307/my.cnf --user=mysql &
[root@db03 sbin]# mysqld --defaults-file=/data/3308/my.cnf --user=mysql &
[root@db03 sbin]# mysqld --defaults-file=/data/3309/my.cnf --user=mysql &
5.连接
[root@db03 sbin]# mysql -uroot -p -S /data/3307/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3308/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3309/data/mysql.sock
使用systemd管理多实例
1.编写systemcd脚本
[root@db03 sbin]# vim /usr/lib/systemd/system/mysqld3307.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
ExecStart=/sbin/mysqld --defaults-file=/data/3307/my.cnf --user=mysql
LimitNOFILE = 5000
[root@db03 sbin]# vim /usr/lib/systemd/system/mysqld3307.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
ExecStart=/sbin/mysqld --defaults-file=/data/3308/my.cnf --user=mysql
LimitNOFILE = 5000
[root@db03 sbin]# vim /usr/lib/systemd/system/mysqld3307.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
ExecStart=/sbin/mysqld --defaults-file=/data/3309/my.cnf --user=mysql
LimitNOFILE = 5000
2.重启加载服务的配置文件
[root@db03 sbin]# systemctl daemon-reload
3.启动服务
[root@db03 sbin]# systemctl start mysqld3307.service
[root@db03 sbin]# systemctl start mysqld3308.service
[root@db03 sbin]# systemctl start mysqld3309.service
4.登录
[root@db03 sbin]# mysql -uroot -p -S /data/3307/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3308/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3309/data/mysql.sock
MySQL版本区别及管理
MySQL5.6与MySQL5.7安装的区别
1.5.7编译需要下载boost
2.5.7的编译参数
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.38\
-DMYSQL_DATADIR=/application/mysql-5.7.38/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.7.38/tmp/mysql.sock \
-DDOWNLOAD_BOOST=1 \ ## mysql-5.7.38.tar.gz没有boost需要添加该参数
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
3.初始化
5.6的命令:mysql_install_db
5.7的命令:mysqld --initialize # 有初始密码
mysqld --initialize-insecure # 没有初始密码
yum安装MySQL
1.下载MySQL的yum源
wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
2.安装MySQL的yum源
rpm -ivh mysql80-community-release-el7-6.noarch.rpm
3.修改yum源里的版本
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch
enabled=1 # 将0改成1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
4.安装mysql-5.7.38版本
yum install -y mysql-community-server-5.7.38
5.启动mysql
systemctl start mysqld
6.查看日志查找mysql初始密码
[root@db03 ~]# grep 'root' /var/log/mysqld.log
2022-08-04T06:57:44.565807Z 1 [Note] A temporary password is generated for root@localhost: DBa4Vs7>##o?
7.登录mysql
[root@db03 ~]# mysql -uroot -p'DBa4Vs7>##o?'
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.38
8.修改配置文件让MySQL使用简单密码
vim /etc/my.cnf
validate_password_length=1
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0
9.重新启动mysql
systemctl restart mysqld
10.修改密码
mysql> alter user root@'localhost' identified by '123';
MySQL用户权限管理
MySQL用户操作
MySQL用户的作用:
1.登录MySQL数据库
2.管理数据库对象
MySQL中用户的定义
在MySQL中,用户不仅仅是用户名,它需要加上主机域才是一个用户,例:用户名@'主机域'
主机域的编写:
localhost
127.0.0.1
%
10.0.0.%
10.0.%.%
10.%.%.%
10.0.0.5%
db01(不能直接连,需要做解析)
10.0.0.0/255.255.255.0
用户管理
增
# 5.6创建用户
mysql> create user jl@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> create user jl1@'localhost' identified by '123';
# 5.7创建用户(必须要给密码)
mysql> create user jl@'localhost' identified by '123';
mysql> grant all on *.* to jl1@'localhost' identified by '123';
# 以前的5.7版本不支持grant在用户不存在的情况下执行,现在版本可以
grant:授权命令
all==all privileges:所有权限,不包括授权权限
# 如果要加授权命令要在密码后面加 with grant option
# grant all on *.* to root@'localhost' identified by '123' with grant option;
*.*:所有库,下面所有表
jl1@'localhost':完整用户
identified by '123':密码123
删
mysql> drop user jl@'localhost'; # 相当于linux userdel -r 删除用户
mysql> delete from mysql.user where user='jl1' and host='localhost'; # 相当于linux 直接在/etc/passwd中删除
改
# 改权限
# 添加权限
mysql> grant update on *.* to jl@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for jl@'localhost';
+-----------------------------------------+
| Grants for jl@localhost |
+-----------------------------------------+
| GRANT UPDATE ON *.* TO 'jl'@'localhost' |
+-----------------------------------------+
1 row in set (0.00 sec)
# 回收权限
mysql> revoke update on *.* from jl@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for jl@'localhost';
+----------------------------------------+
| Grants for jl@localhost |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'jl'@'localhost' |
+----------------------------------------+
1 row in set (0.00 sec)
# 改密码
1.
[root@db02 ~]# mysqladmin -uroot -p password '456'
2. 只能修改当前连接的用户密码
mysql> set password=PASSWORD('123');
Query OK, 0 rows affected (0.00 sec)
3.
mysql> grant all on *.* to root@'localhost' identified by '456';
Query OK, 0 rows affected (0.01 sec)
4.
alter user root@'localhost' identified by '123';
5.只有使用update修改密码时,才需要执行flush privilege
5.6:
mysql> update mysql.user set password=PASSWORD('123') where user='root' and host='localhost';
mysql> flush privileges
5.7:
mysql> update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';
mysql> flush privileges;
查
# 查看所有用户
mysql> select * from mysql.user\G
# 查看指定字段
mysql> select user,host from mysql.user;
# 查看用户的权限
mysql> show grants for root@'localhost';
忘记root密码解决方式
1.先停掉数据库
[root@db03 ~]# systemctl stop mysqld.service
2.重新启动mysql
[root@db03 ~]# mysqld --user=mysql --skip-grant-tables &
3.重新连接数据库
mysql
4.修改密码
mysql> update mysql.user set authentication_string=PASSWORD('456') where user='root' and host='localhost';
mysql> flush privileges;
5.重启mysql
用户的权限
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE,update
# 常用权限:INSERT,SELECT,UPDATE,DELETE
作用对象分解
*.*:当前MySQL实例中所有库下的所有表
wordpress.*:当前MySQL实例中wordpress库中所有的表(单库级别)
wordpress.user:当前MySQL实例中wordpress库中的user表(单表级别)
grant select(user,host) on mysql.user to test@'%' identified by '123'; : 单字段级别
权限小练习
#创建wordpress数据库
create database wordpress;
#使用wordpress库
use wordpress;
#创建t1、t2表
create table t1 (id int);
create table t2 (id int);
#创建blog库
create database blog;
#使用blog库
use blog;
#创建t1表
create table tb1 (id int);
wordpress库
- t1表
- t2表
blog库
- tb1表
# 给wordpress@'10.0.0.5%'用户查看所有库下的所有表权限,密码是123
grant select on *.* to wordpress@'10.0.0.5%' identified by '123';
# 给wordpress@'10.0.0.5%'用户wordpress库下的所有表insert,delete,update权限,密码是123
grant insert,delete,update on wordpress.* to wordpress@'10.0.0.5%' identified by '123';
# 给wordpress@'10.0.0.5%'用户wordpress库下的t1表所有的权限,密码是123
grant all on wordpress.t1 to wordpress@'10.0.0.5%' identified by '123';
问:
一个客户端程序使用wordpress用户登陆到10.0.0.51的MySQL后,
1、对t1表的管理能力? # 所有权限
2、对t2表的管理能力? # select,insert,delete,update权限
3、对tb1表的管理能力? # select权限
MySQL多实例
单实例:一个后台进程+多个线程+一个预分配的内存结构
多实例:多个后台进程+多个线程+多个预分配的内存结构
多实例需要:
多个配置文件
多个端口
data目录
socket文件
日志文件
pid文件
多个启动脚本
5.6的多实例
1.先创建data目录
[root@db02 ~]# mkdir -p /data/330{7..9}
2.准备多个配置文件
[root@m01 ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/data/3307.sock
log_error=/data/3307/data/3307.err
pid_file=/data/3307/data/3307.pid
port=3307
[root@m01 ~]# vim /data/3308/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/data/3308.sock
log_error=/data/3308/data/3308.err
pid_file=/data/3308/data/3308.pid
port=3308
[root@m01 ~]# vim /data/3309/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/data/3309.sock
log_error=/data/3309/data/3309.err
pid_file=/data/3309/data/3309.pid
port=3309
3.初始化
[root@db02 ~]# cd /application/mysql/scripts/
[root@db02 scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/application/mysql --datadir=/data/3307/data
[root@db02 scripts]# ./mysql_install_db --defaults-file=/data/3308/my.cnf --user=mysql --basedir=/application/mysql --datadir=/data/3308/data
[root@db02 scripts]# ./mysql_install_db --defaults-file=/data/3309/my.cnf --user=mysql --basedir=/application/mysql --datadir=/data/3309/data
4.启动
[root@db02 scripts]# mysqld --defaults-file=/data/3307/my.cnf --user=mysql &
[root@db02 scripts]# mysqld --defaults-file=/data/3308/my.cnf --user=mysql &
[root@db02 scripts]# mysqld --defaults-file=/data/3309/my.cnf --user=mysql &
5.连接
[root@db02 scripts]# mysql -uroot -p -S /data/3307/data/3307.sock
[root@db02 scripts]# mysql -uroot -p -S /data/3308/data/3308.sock
[root@db02 scripts]# mysql -uroot -p -S /data/3309/data/3309.sock
6.连接小技巧
[root@db02 scripts]# vim /usr/bin/mysql3307
mysql -uroot -p -S /data/3307/data/3307.sock
[root@db02 scripts]# chmod +x /usr/bin/mysql3307
[root@db02 scripts]# mysql3307
作业
# 使用MySQL5.7做多实例
1.创建数据目录
[root@db03 ~]# mkdir -p /data/330{7..9}
2.准备多个配置文件
[root@db03 ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/data/3307/data
socket=/data/3307/data/mysql.sock
symbolic-links=0
log-error=/data/3307/data/3307.log
pid-file=/data/3307/data/3307.pid
port=3307
[root@db03 ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/data/3308/data
socket=/data/3308/data/mysql.sock
symbolic-links=0
log-error=/data/3308/data/3308.log
pid-file=/data/3308/data/3308.pid
port=3307
[root@db03 ~]# vim /data/3309/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/data/3309/data
socket=/data/3309/data/mysql.sock
symbolic-links=0
log-error=/data/3309/data/3309.log
pid-file=/data/3309/data/3309.pid
port=3309
3.初始化
[root@db03 sbin]# ./mysqld --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/var/lib/mysql --datadir=/data/3307/data --initialize-insecure
[root@db03 sbin]# ./mysqld --defaults-file=/data/3308/my.cnf --user=mysql --basedir=/var/lib/mysql --datadir=/data/3308/data --initialize-insecure
[root@db03 sbin]# ./mysqld --defaults-file=/data/3309/my.cnf --user=mysql --basedir=/var/lib/mysql --datadir=/data/3309/data --initialize-insecure
4.启动
[root@db03 sbin]# mysqld --defaults-file=/data/3307/my.cnf --user=mysql &
[root@db03 sbin]# mysqld --defaults-file=/data/3308/my.cnf --user=mysql &
[root@db03 sbin]# mysqld --defaults-file=/data/3309/my.cnf --user=mysql &
5.连接
[root@db03 sbin]# mysql -uroot -p -S /data/3307/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3308/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3309/data/mysql.sock
使用systemd管理多实例
1.编写systemcd脚本
[root@db03 sbin]# vim /usr/lib/systemd/system/mysqld3307.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
ExecStart=/sbin/mysqld --defaults-file=/data/3307/my.cnf --user=mysql
LimitNOFILE = 5000
[root@db03 sbin]# vim /usr/lib/systemd/system/mysqld3307.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
ExecStart=/sbin/mysqld --defaults-file=/data/3308/my.cnf --user=mysql
LimitNOFILE = 5000
[root@db03 sbin]# vim /usr/lib/systemd/system/mysqld3307.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
ExecStart=/sbin/mysqld --defaults-file=/data/3309/my.cnf --user=mysql
LimitNOFILE = 5000
2.重启加载服务的配置文件
[root@db03 sbin]# systemctl daemon-reload
3.启动服务
[root@db03 sbin]# systemctl start mysqld3307.service
[root@db03 sbin]# systemctl start mysqld3308.service
[root@db03 sbin]# systemctl start mysqld3309.service
4.登录
[root@db03 sbin]# mysql -uroot -p -S /data/3307/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3308/data/mysql.sock
[root@db03 sbin]# mysql -uroot -p -S /data/3309/data/mysql.sock