MySQL基础管理

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     |
+---------------+-------+
相关推荐
summerkissyou19871 小时前
android13-audio-AudioTrack-写数据流程
android·音视频
wuxuanok2 小时前
ThinkPHP ——安装部署与配置
sql·mysql·nginx·php
ttthe_MOon3 小时前
MySQL 高可用解决方案 MHA:原理、配置与实践
数据库·mysql
翔云1234563 小时前
在MySQL中,gtid_purged 的初始化和更新机制
数据库·mysql
董三毛3 小时前
Kotlin Coroutine 底层实现原理
android
L108703 小时前
AutoJsPro GoogleMaterial3 M3组件使用示例
android
smileNicky3 小时前
大型MySQL查询优化实战:从全表扫描到毫秒级响应的通用索引设计
数据库·mysql
星环处相逢4 小时前
MySQL主从复制与读写分离深度解析及实战
adb
Dxy12393102164 小时前
MySQL性能优化深度解析
数据库·mysql·性能优化