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     |
+---------------+-------+
相关推荐
阿巴斯甜11 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker11 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952712 小时前
Andorid Google 登录接入文档
android
黄林晴13 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android