MySQL的初始化配置文件(1)——作用
在MySQL启动时,它又做了哪些事情呢?数据去哪里找到的呢?内存如何分配?疑点重重:

  1. 但是我不知道我的程序在哪?
  2. 我也不知道我将来启动后去哪找数据?
  3. 我还想知道将来我启动的时候状态信息和错误信息放哪?
  4. 我还想知道将来我启动的时候状态信息和错误信息放哪?
    ...
  5. 我还有很多问题需要你们在启动前告诉我。。。。

 你是不是还有更多的问题呢?其实以上问题在下面三种配置中可以找到答案。

mysql启动参数设置:(优先级2>3>1)

  1. 在预编译的选项中设置参数,参数会硬编码到程序中
  2. 命令行中设定启动参数
  3. 初始化配置文件中,给MySQL进行启动配置。

命令行选项:(初始化连接sock文件和端口号)

[root@db01 data]# mysqld_safe --socket=/tmp/mysql.sock --port=3307 &
[1] 2365
[root@db01 data]# 190802 10:13:35 mysqld_safe Logging to '/application/mysql/data/db01.err'.
190802 10:13:36 mysqld_safe Starting mysqld daemon with databases from /application/mysql/data
^C
[root@db01 data]# netstat -lntup|grep 330
tcp        0      0 :::3307                     :::*                        LISTEN      2463/mysqld         
[root@db01 data]# mysql -uroot -p123456 -P3307
Warning: Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/application/mysql-5.6.36/tmp/mysql.sock' (2)
[root@db01 data]# mysql -uroot -p123456 -P3307 -S /tmp/mysql.sock 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

以/tmp/mysql.sock下的套接字文件启动MySQL后,发现不能按照原来的方式去连接MySQL,而是需要用/tmp/mysql.sock套接字去连接。

 

初始化配置:(/application/mysql/my.cnf)

  1. 影响到MySQL服务端
    [mysqld]

    [mysql_safe]

    [server]
     
  2. 影响到MySQL客户端
    [mysql]

    [mysqladmin]

    [mysqldump]

    [client]

     

配置案例:

[root@db01 mysql]# vim my.cnf

[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/application/mysql/tmp/mysql.sock
port=3306
server_id=10
log-error=/var/log/mysql.log
log-bin=/application/mysql/data/mysql-bin
binlog_format=row
skip_name_resolve

[mysql]
socket=/application/mysql/tmp/mysql.sock

[root@db01 mysql]# /etc/init.d/mysqld start
Starting MySQL... SUCCESS! 
[root@db01 mysql]# ps -ef|grep mysql
root       3544      1  0 10:47 pts/0    00:00:00 /bin/sh /application/mysql/bin/mysqld_safe --datadir=/application/mysql/data --pid-file=/application/mysql/data/db01.pid
mysql      3745   3544  6 10:47 pts/0    00:00:00 /application/mysql/bin/mysqld --basedir=/application/mysql --datadir=/application/mysql/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/var/log/mysql.log --pid-file=/application/mysql/data/db01.pid --socket=/application/mysql/tmp/mysql.sock --port=3306
root       3773   1268  0 10:47 pts/0    00:00:00 grep --color=auto mysql
[root@db01 mysql]# 

然后重启MySQL服务,查看其配置,已生效。
在第二章节中我们也说过关于my.cnf的位置问题,如果存在多个配置文件,那么MySQL启动过程将如何读取这些配置文件呢?(读取顺序如下)

注:假设4个配置文件都存在,同时使用--defaults-extra-file指定了参数文件,如果这时有一个 "参数变量"在5个配置文件中都出现了,那么后面的配置文件中的参数变量值会覆盖前面配置文件中的参数变量值,就是说会使用~/.my.cnf中设置的值。

*****注意*****
如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 --defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。

 

最后修改于 2019-08-02 09:54:32
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇