欢迎来到 Kong Xiangqun 的博客

04-数据库连接\启动流程\mysql初始化配置文件\配置多实例\初始化配置文件使用

一、mysql数据库连接

1、自带的工具

Linux 或 UNIX shell 提示符(终端窗口)

 shell> mysql [options]

mysql + 选项

选项:
-u 用户名
-p 密码
-h mysql的地址
-P 端口号
-S socket文件
-e 免交互执行mysql命令

查看帮助信息:

shell> mysql --help(或 -?)

查看客户端程序的版本:

shell> mysql --version(或 -V)

连接mysql例:

1、mysql [-uroot -p -S xxxx]
只限定在没有设定任何密码是可以本地登录的方式
2、mysql -uroot -pxxx [S XXXX]
本地Socket连接
3、mysql -uroot -p123 -h 10.0.0.51 -P 3306
应用远程tcp/ip连接串模式

2、应用连接数据库

注意: 需要加载对应语言程序的API

连接前注意:

判断自己的mysql数据库可以对外提供服务

1、netstat -lnp|grep 3306  或  ps -ef | grep mysqld

2、通过 TCP/IP的方式测试连接

mysql -uroot -p123 -h10.0.0.51

连接成功就可以说明对外提供服务了

二、数据库的启动流程与关闭介绍

1、启动

数据库启动的最终结果就是实例的启动,即守护进程mysqld启动,还有线程、预分配的内存结构

我们说mysqld不是自主启动了,它是mysqld_safe这个脚本拉起来的

mysql.server是我们更加方便管理服务的一个脚本(sys-V),程序加上start就可以启动了还可以设置开机自启等,方便,但是不能定制额外的控制,比如分配的内存大小等

对于单机mysql来讲,建议使用mysql.server,方便管理

对于多实例(一台机器多个实例)来讲,mysqld_safe更推荐

2、关闭

(这里的/etc/init.d/mysqld 是指 mysql解压目录下拷贝过去的文件cp support-files/mysql.server /etc/init.d/mysqld)

启动:

/etc/init.d/mysqld start  -------->                          mysqld_dafe                      ----------> mysqld

关闭:

/etc/init.d/mysqld stop  ---------> mysqladmin -uroot -p1 shutdown  

                                                   servive mysqld stop

                                                    kill -9 

# 第三种为利用系统进程管理命令关闭Mysql
– kill pid            #<== 这里的 pid 为数据库服务对应的进程号。
– killall mysqld   #<== 这里的 mysqld 是数据库服务对应的进程名字。
– pkill mysqld     #<== 这里的 mysqld 是数据库服务对应的进程名字。

 

三、mysql初始化配置文件

思考:

  1. 我要启动,我的程序在哪
  2. 我启动后去哪找数据
  3. 我启动时候的状态信息和错误信息放哪
  4. 启动的时候给了我多少内存
  5. ............
  6. 还有很多东西都是要在启动前告诉我的

针对以上问题解决方案:

  1. 可通过预编译的选项  也就是cmake,硬编码到程序中
  2. 命令行选项 设置初始化配置
    1. --skip-grant-tables
    2. --skip-networking
    3. --socket=               socket文件生成到想要的位置  
# 先关闭服务
# 例: mysql_safe --socket =          /tmp/mysql.sock          &
#  启动实例的一个脚本      实例启动socket写到tmp目录下    后台运行

如果命令行和预编译是设置了相同参数,以命令行为准

注意:

更改完后登录会报错

启动时人为干预了某些参数,在连接时要用到这些参数时

# mysql -uroot -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     隐藏文件 家目录

从上到下读取
"""

mysqld_safe 的参数 --defaults-file

如果使用 ./bin/mysqld_safe 守护进程启动 mysql 数据库时,使用了 --defaults-file=< 配置文件的绝对路径> > 参数,
这时只会使用这个参数指定的配置文件,以上任何配置文件都不在读取了.

# mysql_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

用的最多的是配置文件,建议不要设置多个配置文件,一个就够了,多了乱

四、配置多实例

实例:后台守护进程+线程+预分配的内存结构

实例要启动:

  • 软件
  • 数据(一个实例只能管理自己那一部分数据)

多实例

  • 不需要多个软件
  • 需要多套后台进程+线程+内存结构
    • 多个进程意味着多个端口(3307,3308,3309)
      • 多个配置文件、多个日志文件,多个socket,多个server_id

(1)准备多套配置文件

mkdir -p /data/330{7..9}
"""
/data/3307/my.cnf
/data/3308/my.cnf
/data/3309/my.cnf
"""
vim /data/3307/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log-error=/data/3307/mysql.log
log-bin=/data/3307/mysql-bin
server-id=7
port=3307
[client]
socket=/data/3307/mysql.sock
3307
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log-error=/data/3308/mysql.log
log-bin=/data/3308/mysql-bin
server-id=8
port=3308
[client]
socket=/data/3308/mysql.sock
3308
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log-error=/data/3309/mysql.log
log-bin=/data/3309/mysql-bin
server-id=9
port=3309
[client]
socket=/data/3309/mysql.sock
3309

主从会用到现在没什么用

(2)初始化多套数据

/application/mysql/scripts/mysql_install_db --defaults-file=/data/3307/my.cnf --basedir=/application/mysql --datadir=/data/3307/data

/application/mysql/scripts/mysql_install_db --defaults-file=/data/3308/my.cnf --basedir=/application/mysql --datadir=/data/3308/data

/application/mysql/scripts/mysql_install_db --defaults-file=/data/3309/my.cnf --basedir=/application/mysql --datadir=/data/3309/data

修改权限(如果忘记授权会报错,就要手动创建日志文件)

chown -R mysql.mysql /data/330*

(3)启动多个实例

mysqld_safe --defaults-file=/data/3307/my.cnf &
mysqld_safe --defaults-file=/data/3308/my.cnf &
mysqld_safe --defaults-file=/data/3309/my.cnf &

查看330*端口是否启动

netstat -lnp|grep 330

如果第一次启动,没成功,就不会再生产日志文件了,手动创建

touch /data/3307/mysql.log
touch /data/3308/mysql.log
touch /data/3309/mysql.log

chown -R mysql.mysql /data/330*

最终效果:

mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"
mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"

五、初始化配置文件使用

会用到的

/etc/my.cnf

--defaults-file

1、初始化配置文件能做什么

(1)影响实例启动(最终影响mysqld)

(2)影响客户端程序(例如mysql命令  可不可以把mysql链接时的 参数 添加到配置文件中方便以后登录,是可以的)

2、如何配置初始化配置文件

客户端:

  • 通过[client] 标签做一个总的概述,如果[mysql] 和 [mysqldump]相同
  • 通过[mysql] 和 [mysqldump] 单独指定标签中的内容

服务器端:

  • 通过[server] 标签做一个总的概述,如果[mysqld] 和 [mysql_safe]相同
  • 通过[mysqld] 和 [mysqld_safe] 单独指定标签中的内容

简单配置文件格式

# 关于服务器
[mysqld]
basedir=/application/mysql  # 所有的程序文件都在这个目录
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log # 日志文件 错误日志
log-bin=/data/mysql/mysql-bin # 二进制的位置
server-id=6 # server-id 唯一标识实例的id
port=3306
# 涉及到关于目录的,首先要有这个目录,创建目录

# 关于客户端
[client]
socket=/tmp/mysql.sock
mkdir -p /data/mysql
chown -R mysql.mysql /data/mysql/
/etc/init.d/mysqld start

 

posted @ 2020-10-03 23:22  kongxiangqun20220317  阅读(394)  评论(0)    收藏  举报