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 没什么用
1.sqlyog 2.Navicat #注意:数据库是没有外网的,想连接可以使用ssh通道 3.应用程序连接(研发使用)
Navicat通过ssh通道连接,先SSH连接有外网的机器,再连接mysql数据库,如图
2.连接方式
1)scoket连接
mysql -uroot -p123
mysql -uroot -p123 -S /tmp/mysql.sock
mysql -uroot -p123 -h10.0.0.51
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
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、在业务繁忙的情况下,丢数据(补救措施,高可用)
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.数据库配置文件
/etc/my.cnf /etc/mysql/my.cnf $basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量) ~/.my.cnf #defaults-extra-file (类似include)
1./etc/my.cnf 2./etc/mysql/my.cnf 3.$basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量) 4.~/.my.cnf
1.~/.my.cnf 2.$basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量) 3./etc/mysql/my.cnf 4./etc/my.cnf
[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 | +---------------+-------+
#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
#优先级排序 命令行 > --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
1)配置文件的作用
1.影响的是客户端的连接
2.影响的是服务端的启动
#在配置文件添加,可以把不输入用户密码直接登录(mysql客户端每次连接,会读配置文件中客户端信息,不用重启) [root@db03 ~]# vim /etc/my.cnf #在配置文件添加 [client] user=root password=123456
[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 | +---------------+-------+
1.客户端程序也受配置文件影响 [mysql] 或者写 [client] 2.客户端修改配置文件可以不重启 3.服务端配置修改必须重启才能生效 [mysqld] 或者写 [server] 4.企业经常配置 [mysqld] server_id=2 socket=/tmp/mysql.sock #服务端启动时,socket存放位置 [mysql] socket=/tmp/mysql.sock #如果不配,mysql客户端连接还是会去找默认的socket位置