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"
相关推荐
程序员岳焱12 分钟前
Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析
后端·mysql·性能优化
天天摸鱼的java工程师23 分钟前
MySQL表设计实战指南:从业务场景到表结构优化
java·后端·mysql
混乱意志1 小时前
dgraph example数据导入
数据库·后端
Web极客码1 小时前
WordPress 站点漏洞利用:数据库恶意注入与多重感染的案例分析
数据库·wordpress·网站安全·数据库注入·wordpress漏洞·wordpress安全插件
刺客xs1 小时前
MySQL数据库----DML语句
数据库·mysql
嘉讯科技HIS系统1 小时前
嘉讯科技:医疗信息化、数字化、智能化三者之间的关系和区别
大数据·数据库·人工智能·科技·智慧医疗
爱上语文3 小时前
Redis基础(4):Set类型和SortedSet类型
java·数据库·redis·后端
lifallen3 小时前
Paimon vs. HBase:全链路开销对比
java·大数据·数据结构·数据库·算法·flink·hbase
Brookty4 小时前
【MySQL】JDBC编程
java·数据库·后端·学习·mysql·jdbc
_代号0074 小时前
MySQL梳理一:整体架构概览
后端·mysql