1.配置文件
bash
配置文件的语法
[程序]
key=value
特殊程序
mysqld #服务端
client #所有客户端
关键配置项(KV key=value)
user=mysql #程序用户
basedir=/app/mysql #mysql的安装路径
datadir=/data/mysql/data #mysql的数据目录路径
server_id=6 #不同数据库实例 id不能一样,在主备的时候必须要配置
port=3306 #提供网络访问的端口号,默认3306
socket=/tmp/mysql.sock #提供本地访问的快速通道
2.强制修改MySQL密码
方法一:
bash
1.关闭mysqld服务
systemctl stop mysqld
2.启动跳过授权表
mysqld --skip-grant-tables &
3.重启mysqld服务即可
systemctl start mysqld
方法二:
bash
1.关闭mysqld服务
systemctl stop mysqld
2.修改配置文件
vim /etc/my.cnf
[mysqld]
skip-grant-tables
3.清除所有mysqld进程
killall mysqld
4.修改完配置文件后,重启mysqld服务即可
systemctl resatrt mysqld
方法三:
bash
使用客户端工具mysqladmin来改密码
mysqladmin flush-privileges password '123'
方法四:
bash
使用SQL语句
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('456');
FLUSH PRIVILEGES;#刷新
方法五:
bash
使用修改用户属性的命令
ALTER USER 'root'@'localhost' IDENTIFIED BY '111';
方法六:
bash
修改用户表属性(专业性)
MySQL5.7之前的mysql.user表中密码字段叫password
MySQL5.7(含)之后的mysql.user表中密码字段叫authentication_string
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='root' AND host='localhost';
扩展知识:
bash
1.列出所有的库
show databases;
2.使用库
use 库名
3.列出库中所有表
show tables;
或
show tables from 库名;
4.查看表结构
desc 表名;
desc 库名.表名;
注意点:
bash
如果之前是通过mysqld命令来破解的
1)需要手动关闭mysqld进程
killall mysqld
2)正常启动mysqld
systemctl start mysqld
如果是通过修改配置文件来实现的
1)将配置文件中的skip-grant-tables注释掉
2)重启mysqld服务即可
systemctl restart mysqld
3.MySQL多实例部署
1.环境部署
bash
| 主机 | 配置参数 | 实例1 | 实例2 | 实例3
| db01-10.0.0.51 | server_id | 7 | 8 | 9
| | port | 3307 | 3308 | 3309
| | datadir | /data/3307/data | /data/3308/data | /data/3309/data
| | socket | /data/3307/mysql.sock | /data/3308/mysql.sock | /data/3309/mysql.sock |
| | log | /data/3307/mysql.log | /data/3308/mysql.log | /data/3309/mysql.log
2.创建环境所需资源
bash
# 创建目录
mkdir -p /data/330{7,8,9}/data
# 修改归属
chown -R mysql.mysql /data/33*
3.初始化各个实例
bash
mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/3308/data
mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/3309/data
4.创建每个实例的配置文件
bash
1)3307的配置文件
vim /data/3307/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/3307/data
server_id=7
port=3307
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
2)3308的配置文件
vim /data/3308/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/3308/data
server_id=8
port=3308
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
3)3309的配置文件
vim /data/3309/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/3309/data
server_id=9
port=3309
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
5.启动各个实例
bash
# 临时启动
mysqld --defaults-file=/data/3307/my.cnf &
mysqld --defaults-file=/data/3308/my.cnf &
mysqld --defaults-file=/data/3309/my.cnf &
bash
创建systemd托管脚本
路径有两个
/usr/lib/systemd/system/
/etc/systemd/system/
cat > /etc/systemd/system/mysql3307.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=/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysql3308.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=/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF
cat > /etc/systemd/system/mysql3309.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=/app/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF
6.启动服务
bash
systemctl daemon-reload
systemctl enable mysql3307 mysql3308 mysql3309
systemctl start mysql3307 mysql3308 mysql3309
7.如何验证mysql实例正常启动
bash
1.先看进程
ps aux | grep [m]ysqld
2.看端口号
netstat -lntp | grep mysqld
3.尝试本地登录,判断socket是否正确
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"