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
0 条评论