Mysql的启动参数

Mysql的启动其实不算复杂,我的理解就是读取配置文件,传递参数,启动。

说的比较简单,其实这里是有关部署的事情,配置文件的部署需要了解,我们看看默认的my.cnf的说明:

引用
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /Data/apps/mysql/var) or
# ~/.my.cnf to set user-specific options.

# www.aslibra.com by hqlulu



也就是说,放在 /etc/my.cnf 是服务器的全局设置
然后是启动的数据库的my.cnf,然后是用户目录的 .my.cnf 文件
最后其实就是启动命令指定的参数,下面自己可以找到方法一步一步验证,我们用port的变化来说明:

1 默认的一般启动形式是如下:

/Data/apps/mysql/bin/mysqld_safe --user=mysql &



如果没有 /etc/my.cnf 的情况下,默认是打开mysql安装目录的 var文件夹,读取权限配置
如果没有相应的表,那就会提示出错:

引用
080502 04:12:23  mysqld started
080502  4:12:23 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
080502 04:12:23  mysqld ended



可以使用bin/mysql_install_db新装一个数据库默认库
如果是表的所有者不是mysql,那会提示:

引用
080502 04:15:37  mysqld started
080502  4:15:37 [ERROR] /Data/apps/mysql/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080502  4:15:37 [ERROR] /Data/apps/mysql/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080502  4:15:37 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
080502 04:15:37  mysqld ended



启动后,看到使用的是 3306端口号

2 如果复制一个配置文档到 /etc/my.cnf 并且修改port参数试试:

[mysqld]
port            = 3307
socket          = /tmp/mysql.sock



同样语句启动后,是3307端口号

3 复制一个文件到 var 目录

[mysqld]
port            = 3308
socket          = /tmp/mysql.sock



同样语句启动后,是3308端口号

4 复制一个my.cnf到用户mysql的根目录

cat /etc/passwd 知道:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

复制一个到 /var/lib/mysql/.my.cnf

[mysqld]
port            = 3309
socket          = /tmp/mysql.sock



同样语句启动后,是3308端口号,看来这个不太成立

5 指定配置文件

复制一个 my_setting.cnf ,修改为3340

/Data/apps/mysql/bin/mysqld_safe --defaults-file=/Data/apps/mysql/var/my_setting.cnf --user=mysql &



注意,指定配置文件的参数应该需要在第一个位置出现,互换两个参数的位置会出错了,启动后,确实是3340

6 修改启动参数

/Data/apps/mysql/bin/mysqld_safe --defaults-file=/Data/apps/mysql/var/my_setting.cnf --user=mysql --port=3341 &



启动后是 3341端口

总结:

1 mysql有默认的一些参数,如果没有指定,则取默认值
2 mysql尝试读取 /etc/my.cnf 做默认值
3 mysql尝试读取数据目录的 my.cnf ,取代相应的值
4 mysql的用户目录似乎无效,不太清楚呢 :)
5 mysql启动参数可以指定配置文件位置,优先级次高
6 也可以直接指定具体的参数,优先级最高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值