mysql阶段04 连接工具, 连接方式, 启动关闭mysql, mysql配置读取(优先级)

一、mysql连接管理

1.连接工具

1)mysql自带的连接命令 mysql

#常见用于连接的参数:
-u:        指定用户    mysql -uroot
-p:        指定密码    mysql -uroot -p123
-h:        指定连接的主机        mysql -uroot -p123 -h10.0.0.51
-P:        指定端口    mysql -uroot -p123 -h10.0.0.51 -P3307
-S:        指定socket文件    mysql -uroot -p123 -S /tmp/mysql.sock
-e:        库外执行语句    mysql -uroot -p123456 -e "show databases"
#--protocol    指定连接方式    mysql --protocol=TCP 或 --protocol=socket  没什么用

2)第三方的连接工具

1.sqlyog
2.Navicat
#注意:数据库是没有外网的,想连接可以使用ssh通道
3.应用程序连接(研发使用)

Navicat通过ssh通道连接,先SSH连接有外网的机器,再连接mysql数据库,如图

 

2.连接方式

1)scoket连接

mysql -uroot -p123
mysql -uroot -p123 -S /tmp/mysql.sock

2)TCP/IP连接

mysql -uroot -p123 -h10.0.0.51

 

二、mysql启动关闭流程

1.启动数据库

1./etc/init.d/mysqld start ----> mysql.server ----> mysqld_safe命令 ----> mysqld守护进程
2.mysql_safe --defaults-file=/etc/my.cnf ----> mysqld_safe ----> mysqld
3.systemctl start mysql ----> mysqld_safe ----> mysqld

2.停止数据库

1./etc/init.d/mysqld stop
2.mysqladmin -uroot -p123 shutdown
3.systemctl stop mysql
4.mysqladmin -S /usr/local/3307/mysql.sock shutdown    (多实例关闭方式)

#不推荐的关闭方式
kill -9 mysqlpid
killall mysqld
pkill mysqld
#可能出现的问题
1、如果在业务繁忙的情况下,数据库不会释放pid和sock文件
2、号称可以达到和Oracle一样的安全性,但是并不能100%达到
3、在业务繁忙的情况下,丢数据(补救措施,高可用)

 

三、mysql配置读取

1.初始化内容

1)程序在哪?                    --basedir
2)启动后去哪找数据库?         --datadir
3)启动信息和错误信息放在哪?       $datadir/db01.err  --log-error=/mysql/db01.err
4)sock文件pid文件放在哪?       $datadir/db01.pid  --pid-file=/mysql/db01.pid
5)启动给多少内存?

1)预编译: cmake去指定,硬编码到程序当中去
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.46 -DMYSQL_DATADIR=/usr/local/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.46/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_ZLIB=bundled -DWITH_SSL=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 -DWITH_DEBUG=0 2)在命令行设定启动初始化配置 --skip-grant-tables --skip-networking --datadir=/application/mysql/data --basedir=/application/mysql --defaults-file=/etc/my.cnf --pid-file=/application/mysql/data/db01.pid --socket=/application/mysql/data/mysql.sock --user=mysql --port=3306 --log-error=/application/mysql/data/db01.err 3)初始化配置文件(/etc/my.cnf) socket=/tmp/mysql.sock datadir=/test/mysql basedir=/test/data #越向下,优先级越高,命令行优先级最高

 

2.数据库配置文件

1)配置文件

/etc/my.cnf
/etc/mysql/my.cnf
$basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
~/.my.cnf

#defaults-extra-file (类似include)

2)读取配置文件顺序

1./etc/my.cnf
2./etc/mysql/my.cnf
3.$basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
4.~/.my.cnf

3)生效顺序(优先级顺序)

1.~/.my.cnf
2.$basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
3./etc/mysql/my.cnf
4./etc/my.cnf

4)生效顺序测试

[root@db03 ~]# vim /etc/my.cnf
[mysqld]
server_id=1

[root@db03 ~]# mkdir /etc/mysql
[root@db03 ~]# vim /etc/mysql/my.cnf
[mysqld]
server_id=2

[root@db03 ~]# vim /usr/local/mysql/my.cnf
[mysqld]
server_id=3

[root@db03 ~]# vim ~/.my.cnf
[mysqld]
server_id=4

#重启数据库(注意重启时不要使用system,因为里面指定了配置文件,就不会读取其他的了)
[root@db03 ~]# systemctl stop mysql
[root@db03 ~]# /etc/init.d/mysqld start

#查看数据库server_id
[root@db03 ~]# mysql -uroot -p123456 -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name    | Value |
+---------------+-------+
| server_id        |4      |
+---------------+-------+

3.执行参数优先级

#cmake:
socket=/usr/local/mysql/tmp/mysql.sock

#命令行:
--socket=/tmp/mysql.sock

#配置文件:
vim /etc/my.cnf
[mysqld]
socket=/opt/mysql.sock

#default参数:
--defaults-file=/tmp/a.txt
vim /tmp/a.txt
[mysqld]
socket=/tmp/test.sock

4.优先级总结

#优先级排序
命令行 > --defaults-file > ~/.my.cnf > $basedir/mysql/my.cnf > /etc/mysql/my.cnf > /etc/my.cnf > 初始化命令 > cmake
#defaults-extra-file 优先级看它被配在上面哪个文件里(一般在/etc/my.cnf中)

企业里一般都配置在/etc/my.cnf

 

5.配置文件的使用

1)配置文件的作用

1.影响的是客户端的连接
2.影响的是服务端的启动

2)影响客户端的连接

#在配置文件添加,可以把不输入用户密码直接登录(mysql客户端每次连接,会读配置文件中客户端信息,不用重启)
[root@db03 ~]# vim /etc/my.cnf
#在配置文件添加
[client]
user=root
password=123456

3)影响服务端的启动

[root@db03 ~]# vim /etc/my.cnf
[mysqld]
#server_id=1    修改
server_id=2

#重启使配置文件生效(影响服务端必须重启才生效)
[root@db03 ~]# systemctl restart mysql
[root@db03 ~]# mysql -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name    | Value |
+---------------+-------+
| server_id        |2      |
+---------------+-------+

4)总结

1.客户端程序也受配置文件影响         [mysql]  或者写 [client]
2.客户端修改配置文件可以不重启
3.服务端配置修改必须重启才能生效       [mysqld] 或者写 [server]

4.企业经常配置
[mysqld]
server_id=2
socket=/tmp/mysql.sock    #服务端启动时,socket存放位置

[mysql]
socket=/tmp/mysql.sock    #如果不配,mysql客户端连接还是会去找默认的socket位置

 

posted @ 2024-06-09 00:39  战斗小人  阅读(14)  评论(0编辑  收藏  举报