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"
相关推荐
夜泉_ly1 小时前
MySQL -安装与初识
数据库·mysql
qq_529835352 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New5 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6755 小时前
数据库基础1
数据库
我爱松子鱼5 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo5 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser6 小时前
【SQL】多表查询案例
数据库·sql
Galeoto6 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)7 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231117 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql