MySQL基础管理
文章目录
-
- MySQL基础管理
-
- MySQL的启动流程
-
- 1、核心程序
- 2、mysqld的启动有多种管理
- [3、破解mysql root的密码](#3、破解mysql root的密码)
- MySQL的连接管理
- 多实例简介及配置
MySQL的启动流程
1、核心程序
apl
核心程序
mysqld mysqld的守护进程的程序
mysqld_safe 安全mysqld进程启动的程序,在mysql5.7之前的版本,都是通过该进程打 开mysqld,来实现mysqld的运行
mysql mysql客户端工具,用来登入,免交互执行sql、导入
mysqldump mysql客户端工具,用来
mysqladmin mysql客户端工具
2、mysqld的启动有多种管理
php
#关闭通用方式
killall mysqld
#启动
mysqld & == systemctl start mysqld
mysqld_safe & 读配置文件再启动mysqld
/app/mysql/support-files/mysql.server start
3、破解mysql root的密码
清除密码
php
#方法一:
1、停止mysqld服务,手动启动mysqld,携带两个选项,改完之后重启mysqld服务
mysqld --skip-grant-tables --skip-networking &
#方法二:
2、在mysql的配置文件中添加两行信息 【建议使用】,改完之后重启mysqld服务
[mysqld]
...
skip-grant-tables #跳过授权表
skip-networking #关闭网络,如果没有这一条在其他主机上所有人都可以以root进入,非常不安全
修改密码
php
#方法一:
mysql> SET PASSWORD FOR 'root'@'localhost' = 'Jy123.com';
Query OK, 0 rows affected (0.02 sec)
#方法二:
mysql> alter user root@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
#方法三:
mysql> update mysql.user set authentication_string=PASSWORD('Jy123.com') where user='root' and host='localhost';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1
#方法四,授权
注释:
mysql中可以使用帮助
例如:mysql> help set passwd 查询设置密码的帮助手册
注释:如果在修改密码的时候出现报错,执行mysql> flush privileges;进行刷新才能生效
MySQL的连接管理
1、连接工具
php
mysql自带的工具
mysql
-u 用户名
-p 密码
-h 主机
-P 端口号
-S socket文件
-e 面交互执行mysql命令
# TCP/IP方式(本地、远程)
mysql -uroot -p'Tf123.com' -h 10.0.0.51 -P3306
# Socket方式(本地),默认就是通过socket连接
mysql -uroot -p'Tf123.com' [-S /tmp/mysql.sock]
第三方应用程序连接工具
php
sqlyog、navicat等
注意:需要加载对应语言程序的API
多实例简介及配置
案例环境
| 主机 | 实例1 | 实例2 | 实例3 | |
|---|---|---|---|---|
| db01-10.0.0.51 | server_id | 7 | 8 | 9 |
| port | 3307 | 3308 | 3309 | |
| datadir | /data/3307/my.cnf | /data/3308/my.cnf | /data/3309/my.cnf | |
| 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 |
案例步骤
1、创建目录
php
[root@db01 ~]# mkdir -p /data/330{7,8,9}/data
[root@db01 ~]# ls /data/33*
/data/3307:
data
/data/3308:
data
/data/3309:
data
[root@db01 ~]# chown -R mysql.mysql /data/33*
2、编写配置文件
php
#3307的配置文件
[root@db01 ~]# cat /data/3307/my.cnf
[mysqld]
basedir=/app/mysql #软件目录
datadir=/data/3307/data #本实例数据目录
socket=/data/3307/mysql.sock #本实例socket文件
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
#3308的配置文件
[root@db01 ~]# cat /data/3308/my.cnf
[mysqld]
basedir=/app/mysql #软件目录
datadir=/data/3308/data #本实例数据目录
socket=/data/3308/mysql.sock #本实例socket文件
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
#3309的配置文件
[root@db01 ~]# cat /data/3309/my.cnf
[mysqld]
basedir=/app/mysql #软件目录
datadir=/data/3309/data #本实例数据目录
socket=/data/3309/mysql.sock #本实例socket文件
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
3、初始化三个实例
php
#3307
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/mysql
#3308
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/mysql
#3309
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/app/mysql
4、启动mysql实例
php
#方法一:使用systemctl进行启动
[root@db01 ~]# cp /usr/lib/systemd/system/mysqld{,3309}.service
[root@db01 ~]# cp /usr/lib/systemd/system/mysqld{,3308}.service
[root@db01 ~]# cp /usr/lib/systemd/system/mysqld{,3307}.service
[root@db01 ~]# sed -ri '/^ExecStart/s#(.*)=(.*)#\1=/data/3307/my.cnf#g' /usr/lib/systemd/system/mysqld3307.service
[root@db01 ~]# sed -ri '/^ExecStart/s#(.*)=(.*)#\1=/data/3308/my.cnf#g' /usr/lib/systemd/system/mysqld3308.service
[root@db01 ~]# sed -ri '/^ExecStart/s#(.*)=(.*)#\1=/data/3309/my.cnf#g' /usr/lib/systemd/system/mysqld3309.service
[root@db01 ~]# systemctl start mysqld3307.service
[root@db01 ~]# systemctl start mysqld3308.service
[root@db01 ~]# systemctl start mysqld3309.service
[root@db01 ~]# netstat -lnpt | grep 33
tcp6 0 0 :::3307 :::* LISTEN 3610/mysqld
tcp6 0 0 :::3308 :::* LISTEN 3573/mysqld
tcp6 0 0 :::3309 :::* LISTEN 3644/mysqld
注释:如果启动没有端口就进行重载:systemctl daemon-reload
#方法二:使用mysqld_safe启动多实例
[root@db01 ~]# mysqld --defaults-file=/data/3307/my.cnf &
[1] 2868
[root@db01 ~]# mysqld --defaults-file=/data/3308/my.cnf &
[2] 2896
[root@db01 ~]# mysqld --defaults-file=/data/3309/my.cnf &
[3] 2924
5、验证实例是否成功
php
#查看端口号
[root@db01 ~]# ss -lntp | grep :330
LISTEN 0 80 [::]:3307 [::]:* users:(("mysqld",pid=2868,fd=22))
LISTEN 0 80 [::]:3308 [::]:* users:(("mysqld",pid=2896,fd=22))
LISTEN 0 80 [::]:3309 [::]:* users:(("mysqld",pid=2924,fd=22))
[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 7 |
+---------------+-------+
[root@db01 ~]# mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 8 |
+---------------+-------+
[root@db01 ~]# mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 9 |
+---------------+-------+