一 启动
数据库启动的最终结果就是实列的启动,就是守护进程mysqld启动,还有线程,预分配的内存结构
我们说musqld不是自助启动的,他是mysqld_safe这个脚本拉起来的
mysql.server是我们更加方便管理服务的一个脚本(sys-v),程序加上start就可以启动了,还可以设置开机自启等,方便但是不能定制额外的控制,比如分配的内存大小等
对于单机mysql来讲,建议使用mysql.server方便管理
对于多实例(一台机器多个实例)来讲,mysqld_safe等推荐
二 关闭
(这里的/etc/init.d/mysqld 是指mysql解压目录下拷贝过去的文件cp support-files/mysql.server /etc/init.dmysqld)
启动:
/etc/init.d/mysqld start -----> mysqld_dafe -----> mysqld
关闭:
/etc/init.d/mysqld stop -----> mysqladmin -uroot -pshutdown
servive mysql stop
kill -9
# 第三种为利用系统进程管理命令关闭mysql -kill pid #<== 这里的pid 为数据库服务对应的进程号 -killall mysqld # <== 这里的mysqld 是数据库服务对应的进程名字 - pkill mysqld # <== 这里的mysqld 是数据库服务对应的进程名字
野蛮kill掉数据库案例 https://blog.51cto.com/oldboy/1431161 https://blog.51cto.com/oldboy/1431172
二. mysql初始化配置文件
思考 :
1.我要启动,我的程序在哪里
2.我启动区哪里找数据
3.我启动时候的状态信息系和错误信息放在哪里
4.启动的时候给了我多少内存
5. 等等
针对以上问题解决方案:
1.可通过预编译的选项 也就是cmake,硬编译到编程中
2. 命令行选项 设置初始化配置
1.--skip-grant-tables
2.--skip-networking
3.--socket # socket文件想要生成的位置
# 先关闭服务 # 列 mysql_safe --socket = /tmp/mysql.sock # 启动实列的一个脚本 实列启动socket写到tmp目录下 后台运行
如果命令行和预编译是设置了相同参数,以命令行为为准
注意:
更改完后登陆会报错
启动时人为干预了某个参数,在连接时需要用到这些参数是
mysql -eroot -p1 -s /tmp/mysql.sock
3.初始化配置文件
配置文件的读取顺序
""" /etc/my.cnf 默认第一个读取 /etc/mysql/my.cnf $ MYSQL_HOME/my.cnf 前提是在环境变量中定义了MYSQL_HOME变量 defaults-extra-file=/tmp/a.txt 除了以上的配置文件中 额外加载外部的配置 ~/.my.cnf 隐藏文件 家目录 从上到下读取 """
mysql_safe的参数 --defaults-file
如果使用 ./bin/mysqld_safe守护进程启动 mysql数据库时,使用了 --defaults-file=< 配置文件的绝对领 >> 参数,
这时只会使用这个参数指定的陪住文件,以上任何配置文件都不在读取了
mysqld_safe --defaults-file=/tmp/a.txt &
思考:
""" cmake: socket=/appliscation/mysql/tmp/mysql.sock 命令行: --socket=/tmp/mysql.sock 配置文件: /etc/my.cnf socket=/opt/mysql.sock --defaults-file=/tmp/a.txt socket=/tmp/test.sock """
问:
socket生成在哪里
命令行 /tmp/mysql.sock
结论:
命令行>配置文件(--defaults-file也是配置文件)>cmake
用的最多的是配置文件,建议不要设置多个配置文件,一个就够了,多了乱