一 MySQL自带的连接工具
mysql
常见的特定于客户机的连接选项
-u:指定用户
-p:指定密码
-h:指定主机
-P:指定端口
-S:指定sock
-e:指定SQL
--protocol=name:指定连接方式
(2)第三方的连接工具
使用过的:Sqlyog(Windows尝试)、navicat、MySQL Workbench(Linux下尝试过)、phpMyAdmin
掌握:各个工具的安装和使用方式!
(3)应用程序连接MySQL
注意:需要加载对应语言程序的API(Java、Python)
二 mysql启动关闭的流程
一般是脚本启动关闭,/etc/init.d/mysqld start
启动流程
# /etc/init.d/mysqld start ------> mysqld_safe ------> mysqld
关闭
/etc/init.d/mysqld stop
mysqladmin -uroot -poldboy123 shutdown
#####慎重######
kill -9 pid # 注意:-9和15的区别!
killall mysqld
pkill mysqld
出现问题:
- 1、如果在业务繁忙的情况下,数据库不会释放pid和sock文件(理论上可以删除)
- 2、号称可以达到和Oracle一样的安全性,但是并不能100%达到,性能略差
- 3、在业务繁忙的情况下,丢数据(补救措施,高可用)
老男孩:生产高并发环境野蛮粗鲁杀死数据库进程导致故障企业案例
(4)MySQL实例初始化配置
1.初始化配置文件的作用
场景:我要启动实例
问题:
1)我不知道我的程序在哪?
2)我也不知道我将来启动后去哪找数据库?
3)将来我启动的时候启动信息和错误信息放在哪?
4)我启动的时候sock文件pid文件放在哪?
5)我启动,你们给了我多少内存?
说明:跟预编译,命令行,配置文件相关
了解:命令行中没有手动指定的,没有指定的(错误日志等)跟初始化或者配置文件有关系!
# 预编译:cmake去指定,硬编码到程序当中去
# 在命令行设定启动初始化配置
编译的参数
--skip-grant-tables # 授权表
--skip-networking # 网络连接
--datadir=/application/mysql/data # 数据目录
--basedir=/application/mysql # 安装目录
--defaults-file=/etc/my.cnf # 配置文件
--pid-file=/application/mysql/data/wzj.pid # 启动的后pid存储位置
--socket=/application/mysql/data/mysql.sock# 启动后socket的位置
--user=mysql # 用户
--port=3306 # 端口
--log-error=/application/mysql/data/db01.err # 错误日志
mysql编译和nginx编译的一些区别
mysql在cmake编译的时候少模块,可以在后续的配置文件或者命令行启动就OK了,但是Nginx必须重新编译
3)初始化配置文件(/etc/my.cnf)
配置文件读取顺序(重点)
# (1)/etc/my.cnf
# (2)/etc/mysql/my.cnf
# (3)$MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
# (4)defaults-extra-file (类似nginx的include,引用或者说是包含)
# (5)~/my.cnf
# 说明:相同的配置,最后的可能覆盖之前的!
# (6)mysald_safe defaults-file=/etc/my.txt & 手工指定的最后读取
# 多(6)的特殊说明--->如果加了defaults-file=,不会读取1~5的配置文件,只会读取6这一个!
场景:修改了/etc/my.cnf但是没有生效!
实验:几个配置文件都有,然后重新启动,看server_id是多少
-- 登陆查询
show variables like 'server_id';
思考
-- cmake:
--socket=/application/mysql/tmp/mysql.sock
-- 命令行:
--socket=/tmp/mysql.sock
-- 配置文件:注意:opt的权限(mysql.mysql)
/etc/my.cnf中[mysqld]标签下:socket=/opt/mysql.sock
-- default参数:
--defaults-file=/tmp/a.txt配置文件中[mysqld]标签下:socket=/tmp/test.sock
思考:socket文件会生成在哪?文件名叫什么?
mysqld_safe --defaults-file=/etc/a.txt --socket=/tmp/my.wzj &
# a.txt中socket的配置文件中 --socket=/opt/mysql.sock
# 解答:生成的文件名字叫做/tmp/my.wzj
优先级的顺序
# 读取顺序
# 命令行(高) -->defaults-file(有了它,下面的就不用考虑了) -->配置文件 -->预编译(最没有用的)
初始化配置文件功能
1)影响实例的启动--->socket文件
2)影响到客户端
# 影响:mysql、mysqldump、mysqladmin
如何配置初始化配置文件
1)配置标签分类
[client]所有客户端程序-->可以用mysql或mysqldump
[server]所有服务器程序-->可以用mysqld或mysqld_safe标签