MySQL的启动和关闭
日常启停 需要依赖于
/etc/my.cnf,启动时会读取配置文件的信息
- mysql.server start -> mysqld_safe -> mysqld
 - mysql.service -> mysqld
 
维护启停
- mysqld_safe --skip-grant-tables --skip-networking & (我们一般会将我们需要的参数临时加到命令行.也会读取/etc/my.cnf的内容,但是如果冲突,命令行优先级最高)
 
直接启动和直接关闭
- mysqld_safe &
 - mysqladmin -uroot -p123456 shutdown
 
初始化配置
初始化配置的作用
- 影响数据库的启动
 - 影响到客户端的功能
 
初始化配置的方法
- 初始化配置文件
/etc/my.cnf - 启动命令行上进行设置
mysqld_safe,mysqld - 预编译时设置(仅限于编译安装时设置)
 
初始化配置文件的书写格式
[标签]
参数=值
[标签]
xxx=xxx
#配置文件标签的归类
#服务器端
[mysqld]
[mysqld_safe]
[server]
#客户端
[mysql]
[mysqladmin]
[mysqldump]
[client]
配置文件设置样板(5.7)
[mysqld]
#用户
user=mysql   
#软件安装目录                
basedir=/application/mysql  
#数据路径
datadir=/data/mysql/data 
#socket文件位置
socket=/tmp/mysql.sock
#服务器id号
server_id=6
#端口号
port=3306
#客户端配置
[mysql]
#socket文件位置
socket=/tmp/mysql.sock
配置文件读取顺序
可以通过
mysqld --help --verbose |grep my.cnf命令查找有关配置文件的信息,越靠后优先级越高,参数冲突以靠后的为准
- 1最高,4最低
 
/etc/my.cnf/etc/mysql/my.cnf/usr/local/mysql/etc/my.cnf~/.my.cnf
还可以用参数来指定配置文件
#指定默认配置文件
#--defaults-file 
#指定/tmp/aa.txt为配置文件
mysqld_safe --defaults-file=/tmp/aa.txt &
MySQL的连接管理
默认情况下,是不能远程连接的,需要在数据库添加权限
#添加root账户密码为123456,10.0.0.0/24白名单
grant all on *.* to root@'10.0.0.%' identified by '123456';
配置完成后可以使用远程的地址登录,也可以使用数据库工具
- sqlyog
 - navicat
 
#使用其他地址登录数据库
mysql -uroot -p -h 10.0.0.51 -P3306
多实例管理
在一台主机上,运行多个MySQL实例,端口号不同
准备多个目录
mkdir -p /data/330{7,8,9}/data
准备配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF
cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF
cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF
初始化三套数据,备份端口为3306的配置文件
初始化参数中,是设置不设密码,可以直接登录
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data --basedir=/application/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data --basedir=/application/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data --basedir=/application/mysql
systemd管理多实例
cat >/etc/systemd/system/mysqld3307.service <<EOF
[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=/application/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysqld3308.service <<EOF
[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=/application/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysqld3309.service <<EOF
[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=/application/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF
授权并启动
chown -R mysql.mysql /data/*
systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service
查看是否启动成功
[root@db01 system]# netstat -lutnp |grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      4622/mysqld         
tcp6       0      0 :::3307                 :::*                    LISTEN      4839/mysqld         
tcp6       0      0 :::3308                 :::*                    LISTEN      4846/mysqld         
tcp6       0      0 :::3309                 :::*                    LISTEN      4853/mysqld   
验证多实例
mysql -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"          
           最后一次更新于2020-03-24 10:02         
 
        
Alipay
Wechat
           
           
   
  
0 条评论