Mysql创建实例及强制修改密码

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"
相关推荐
tatasix10 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。22 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了23 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度25 分钟前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮28 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98762 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
武子康2 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
黑色叉腰丶大魔王2 小时前
《MySQL 数据库备份与恢复》
mysql