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"
相关推荐
明月看潮生1 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原
数据库·青少年编程·postgresql·编程与数学
明月看潮生1 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 14课题、触发器的编写
数据库·青少年编程·postgresql·编程与数学
加酶洗衣粉5 小时前
MongoDB部署模式
数据库·mongodb
Suyuoa5 小时前
mongoDB常见指令
数据库·mongodb
添砖,加瓦5 小时前
MongoDB详细讲解
数据库·mongodb
Zda天天爱打卡5 小时前
【趣学SQL】第二章:高级查询技巧 2.2 子查询的高级用法——SQL世界的“俄罗斯套娃“艺术
数据库·sql
我的运维人生5 小时前
MongoDB深度解析与实践案例
数据库·mongodb·运维开发·技术共享
步、步、为营6 小时前
解锁.NET配置魔法:打造强大的配置体系结构
数据库·oracle·.net
张3蜂6 小时前
docker Ubuntu实战
数据库·ubuntu·docker
神仙别闹7 小时前
基于Andirod+SQLite实现的记账本APP
数据库·sqlite