一、mysql连接管理
1.连接工具
1)mysql自带的连接工具 mysql
#mysql 常用的参数
-u: #指定用户 mysql -uroot
-p: #指定用户的密码 mysql -uroot -p123
-h: #指定连接的主机 mysql -uroot -p123 -h172.16.1.51
-S: #指定socket文件 mysql -uroot -p123 -S /tmp/mysql.sock
-P: #指定端口 mysql -uroot -p123 -P3307
-e: #库外执行sql语句 mysql -uroot -p123 -e 'show databases'
2)第三方连接工具
1.navicat
2.sqlyog
3.phpmyadmin
2.连接方式
1)socket连接
mysql -uroot -p123
mysql -uroot -p123 -S /tmp/mysql.sock
2)TCP/IP连接
mysql -uroot -p123 -h 172.16.1.51
二、mysql启动关闭流程
1.启动数据库
1.systemctl start mysql
2./etc/init.d/mysqld start
3.mysqld_safe --defaults-file=/etc/my.cnf
4.mysqld --defaults-file=/etc/my.cnf
#最终都是mysqld_safe启动,mysqld守护进程在后台
2.关闭数据库
#正经关闭数据
1.systemctl stop mysql
2./etc/init.d/mysqld stop
3.mysqldadmin -uroot -p123 shutdown
#不正经关闭数据库
1.kill -9 mysqlpid
2.killall mysqld
3.pkill mysqld
#后果:
1.如果业务量很大,数据库不会立刻关闭,只是停止服务,pid文件和socket文件还存在
2.如果业务量很大,会丢失数据
三、mysql配置管理
1.配置文件作用
1)我不知道我的程序在哪?
--basedir=
2)我也不知道我将来启动后去哪找数据库数据?
--datadir
3)将来我启动的时候启动信息和错误信息放在哪?
$datadir/db01.err
4)我启动的时候sock文件pid文件放在哪?
$datadir/mysql.pid
5)我启动,你们给了我多少内存?
在配置文件中可以配置mysql的预分配内存空间。
2.预编译阶段
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.20 \
-DMYSQL_DATADIR=/application/mysql-5.6.20/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.20/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
3.配置文件
vim /etc/my.cnf
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
1)配置文件位置
/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
defaults-extra-file (类似include)
~/my.cnf
3.命令行
mysqld_safe
--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
# 查看数据库支持的字符串
mysql> show collation;