mysql连接管理_MySQL - 连接管理

before

本篇介绍,MySQL连接的不同方式和初始化的一些参数配置及如何配置多实例。

连接参数

前文中已经说过,MySQL支持socket和TCP/IP两种连接方式。

[root@cs mysql]# mysql -uroot -p -S /tmp/mysql.sock

Enter password:

-S指定socket来连接;一般我们不加-S就可以登录到MySQL中,是因为MySQL使用的socket文件默认的存放在/tmp/mysql.sock中,或者你在配置文件中指定,这样我们不指定也能找到socket文件。另外,一般使用socket登录都是本地登录,所以,你要保证你的登录用户是有localhost的权限的。

而使用TCP/IP的方式就是:

[root@cs mysql]# mysql -uroot -p -h192.168.85.133 -P3306

Enter password:

其他常用的参数:

参数

描述

备注

-u

登录用户名(账号)

-p

登录密码

-h

登录IP

-P

登录端口

-S

指定socket文件登录

-e

免交互执行命令

也就是不用登录进去就可以执行一些简单的命令并返回结果

<

导入并执行外部的SQL脚本

PS:

参数和值之间可以挨着也可以空格分割。

如果TCP/IP和socket连接同时使用,默认TCP/IP方式优先。

[root@cs mysql]# mysql -uzhangkai -p -h 192.168.85.133 -P3306 -S /tmp/mysql.sock

Enter password:

mysql> show processlist;

+----+----------+----------+------+---------+------+----------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+----------+----------+------+---------+------+----------+------------------+

| 7 | zhangkai | cs:59128 | NULL | Query | 0 | starting | show processlist |

+----+----------+----------+------+---------+------+----------+------------------+

1 row in set (0.00 sec)

在外部执行MySQL的内部命令,如shell脚本中,可以使用-e参数:

[root@cs mysql]# mysql -uzhangkai -p123 -h 192.168.85.133 -P3306 -e "show processlist;"

mysql: [Warning] Using a password on the command line interface can be insecure.

+----+----------+----------+------+---------+------+----------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+----------+----------+------+---------+------+----------+------------------+

| 8 | zhangkai | cs:59130 | NULL | Query | 0 | starting | show processlist |

+----+----------+----------+------+---------+------+----------+------------------+

-e后跟双引号,引号内可以写想要执行的命令。

如果有一些SQL脚本要执行,可以使用

create database data_test;

然后导入到数据库中即可:

[root@cs home]# ls

data.sql

[root@cs home]# cat data.sql

create database data_test;

[root@cs home]# mysql -uroot -p

Enter password:

[root@cs home]# mysql -uroot -p -e"show databases;"

Enter password:

+--------------------+

| Database |

+--------------------+

| information_schema |

| data_test |

| mysql |

| performance_schema |

| sys |

+--------------------+

此时,我们可以查询到SQL脚本创建的data_test数据库了。

多种启动方式

9281cd8e5c4c1066a3f5b3e344a8a7f8.png

如上图,在centos6中,我们可以通过service来调用mysql.server脚本来启动MySQL,而mysql.server脚本内部会调用mysqld_safe脚本来调用mysqld这个启动程序脚本来 启动MySQL服务。mysqld_safe的作用是监控mysqld的运行状态。我们也可以通过./bin/mysqld_safe &临时启动mysqld_safe来完成一些操作。

另外在centos7中,可以直接是使用systemctl来直接调用mysqld启动MySQL,而且centos7中也可以配置service的启动方式。

当然,无论是systemctl,还是service的启动方式,都是相对固定的start、stop这些操作,那有些情况下需要临时维护或者做其他的操作,就需要用到mysqld_safe模式或者直接启动mysqld了。

初始化配置

初始化配置的目的是:干预MySQL的启动,或者干预客户端的连接,说白了就是让MySQL按照我们的意愿来启动。

初始化配置都有哪些方法:

预编译,这个方法可以pass掉了,因为我们一般都是下载二进制的源码包。

配置文件,也就是/etc/my.cnf文件,适用于所有的启动方式。

命令行,直接在命令行启动时添加各种参数,当然,这种参数仅限于mysqld_safe、mysqld这两种方式。

综上所述,推荐使用配置文件的的方式来做数据库初始化启动。

先来看,MySQL在启动时,都(默认)读取了哪些配置文件:

[root@cs ~]# mysqld --help --verbose | grep my.cnf

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default

如果多个配置文件有相同的参数,那就会以最后读取到的为准,也就是~/.my.cnf文件为准。但是如果启动时加入--defaults=/etc/my.cnf时,会以你defaultsd的路径为准,其他的文件就不读取了。

配置文件的介绍

[标签]

配置项=xxxx

# 标签的类型主要包括,服务端和客户端的定义

# 服务端包括以下几类:

[mysqld]

[mysqld_safe]

[server] # 所有服务端的统称,不过不建议使用

# 客户端包括:

[mysql]

[mysqldump] # 备份用

[client]

# 来个示例

[root@cs ~]# cat /etc/my.cnf

[mysqld]

user=mysql # mysql工作时的用户

basedir=/opt/mysql # mysql所在的目录,必须设定的参数

datadir=/data/mysql # mysql数据存放的目录,必须设定的参数

server_id=6

port=3306

socket=/tmp/mysql.sock # 服务器端socket所在路径

log_error=/data/mysql/mysql.log # 错误日志

[mysql]

socket=/tmp/mysql.sock # 必须参数

# prompt=3306 [\\d]> # 提示符

# user=root # 登录的用户名和密码,这里不建议用,不安全

# password=123

需要补充的是,带下划线的参数,如server_id,在MySQL5.5版本以前可以写成中横线的形式,但是中横线这种方式存在问题,所以后续版本都统一使用下划线这种连接方式(当然,为了兼容,也支持中横线的形式)。

另外,关于socket可能的报错,就是找不到socket文件,该报错的原因:

数据库没启动,没启动没有生成socket文件。

启动时,指定的socket文件路径不对,也可能是配置文件中的路径写错了。

server_id参数,主从复制用,可以简单理解在MySQL5.7以后必加的一个参数,值是1~65535之间的任意数字,并且跟其他的实例区分开。

欢迎斧正,that's all

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值