0x01
mysql启动时,读取配置文件的顺序
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
使用配置文件的方式
1.它依次查找多个需要查找的文件,结果是所有文件交集
2.如果某参数在多个文件中宏出现多次,后配置的最终生效
可以使用 mysql --help --verbose 来查看
1.显示mysql的程序启动时可用的选项,通常都是长选项
2.显示mysqld配置文件中可用的服务变量
mysql > show global variables
mysql > show session variables
0x02
1. 在mysql数据库安装好之后,首先的初始化操作就是删除匿名用户
查询有哪些匿名用户
select host,user,password from mysql.user;
删除对应的匿名用户,实际情况,可根据实际情况删除。
drop user ''@'localhost';
drop user ''@'stuphp.hping3.com';
用户名账号由两部分组成:username@host
host还可以使用通配符
%:任意长度的任意字符
_:匹配任意单个字
2. 给所有root用户设置密码
第一种方式修改密码:
实例 ---> mysql > set password for root@localhost = password('photon');
格式 ---> mysql > set password for username@host = password( 'your_password')
第二种方式修改密码:
该方式修改密码,是直接修改mysql下的user表,所有要先进到user表中执行
故 use mysql;
update user set password = password('redhat') where user = 'root';
让其立即生效 ---- 即 让其通知mysqld重新读取 user表
flush privileges;
第三种方法修改密码:
实例 ---->
mysqladmin -uroot -hlocalhost password 'photon' -p ----localhost 是一个主机IP
mysqladmin -u root -h localhost -p flush-privileges ----让其生效
格式 ---->
mysqladmin -u UserName -h Hot password 'new_password' -p
mysqladmin -u UserName -h Host -p flush-privileges
0x03
接入MySQL服务器
mysql <-mysql protocol-> mysqld
mysql接受链接请求
本地通信:客户端与服务器端位于同一主机,而且还要基于127.0.0.1(localhost)地址或lo接口进行通信
Linux OR Unix:Unix Sock,/tmp/mysql.scok,/var/lib/mysql/mysql.sock
Widows:memory pipe
远程通信:客户端与服务器位于不同的主机,或在统一主机便使用非回环地址通信
TCP Socket
客户端工具:mysql,mysqladmin,mysqldump,mysqlcheck
[client]
通信的选项:
-u,--user=
-h, --host=
-p, --password=
--protocol={tcp|socket|memory|pipe}
--port=
--socket=/tmp/mysql.sock
mysql监听的端口:3306/tcp
非客户端类的管理工具:myisamchk,myisampack
myisamchk --检测工具
myisampack 打包工具
mysql:
交互式模式
mysql>
脚本模式
mysql < /path/to/mysql_scripy.sql
mysql交互式模式:
客户端命令
mysql> help
mysql>?
c:取消命令的执行
g
G
q
!
s
. /path/to/mysql_script.mysql 批处理zhixingmysql命令
# 命令补全 --- 她需要读取表重新生成hash ,会导致比较大的数据,出现卡的情况
服务器端命令:需要命令结束符,默认为分号(;)
mysql> help关键字
help contents 获取整体列表
help keyword 获取相关命令的列表
List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (?) Synonym for `help'. clear (c) Clear the current input statement. connect ( ) Reconnect to the server. Optional arguments are db and host. delimiter (d) Set statement delimiter. edit (e) Edit command with $EDITOR. ego (G) Send command to mysql server, display result vertically. exit (q) Exit mysql. Same as quit. go (g) Send command to mysql server. help (h) Display this help. nopager ( ) Disable pager, print to stdout. notee ( ) Don't write into outfile. pager (P) Set PAGER [to_pager]. Print the query results via PAGER. print (p) Print current command. prompt (R) Change your mysql prompt. quit (q) Quit mysql. rehash (#) Rebuild completion hash. source (.) Execute an SQL script file. Takes a file name as an argument. status (s) Get status information from the server. system (!) Execute a system shell command. tee (T) Set outfile [to_outfile]. Append everything into given outfile. use (u) Use another database. Takes database name as argument. charset (C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (W) Show warnings after every statement. nowarning (w) Don't show warnings after every statement.
0x04
mysql命令行选项
--compress 压缩传输
--default-character-set 默认的字符集设置
-V: 显示版本号
-v: 显示详细信息
--ssl-ca ca证书
--ssl-capath ca证书的文件夹
--ssl-cert 客户端证书
--ssl-cipher 加密
--ssl-key 使用的私钥
--ssl-verify-server-cert 验证服务器端证书
--database= -D:指定要使用的数据库
mysql命令提示符
mysql> 等待输入命令
'> 前面提供的‘未提供结束’
”> 引用字符串
`> 引用字符串
—> 续航符
/*> 注释信息
mysql快捷键和Linux下shell差不多
ctrl+w:删除光标所在处之前的一个单词 --- 同shell
ctrl+u:删除光标之前的所有内容到行首 --- 同shell
ctrl+y:粘贴之前ctrl+w或者ctrl+u删除的内容
ctrl+a:移动光标至行首 --- 同shell
ctrl+e:移动光标至行尾 --- 同shell
mysql的输出格式
-H --html:输出为html格式的文档
-X --xml:输出为xml格式的文档
--safe-updates:发送命令时拒绝使用无where字句的update或delete命令 但是如果使用limit 是可以正常执行
使用 -H参数
mysql -H -uroot -p ----查询结果是html格式
0x05
mysqladmin工具
mysqladmin [options] command [arg] [command[arg]] .....
command
create DB_Name 创建空数据库 mysqladmin -uroot -p create mydb
-e:直接返回 mysql -uroot -p -e 'show databases;' ---不进数据库就可以查看数据库
drop DB_Name 删除数据库
debug 打开调试日志并记录与error log中
status:输出简要状态信息 mysqladmin -uroot -p status
-sleep # 指定显示延迟 mysqladmin -uroot -p status --sleep 3 sleep 指定睡眠几秒钟再显示
-count # 指定批次 mysqladmin -uroot -p status --sleep 1 --count 5 指定显示几次
extended-status:输出mysq的各状态变量及数值,相当于执行“mysql> show global status” mysqladmin -uroot -p status extended-status
flush-hosts:清空主机相关的缓存:DNS解析缓存,此前因为连接错误次数过多而被拒绝访问mysqld的主机列表
flush-logs:日志滚动,主要是二进制日志和中继日志
refresh:相当于同时使用flush-logs和flush-hosts
flush-privileges:通知服务器重读授权表
reload:重载授权表
flush-status:重置状态变量的值
flush-tables:关闭当前打开的表文件句柄, 但是如果有表正在被查询,就要等查询完毕,才关闭!
flush-threads:清空线程缓存
kill:杀死指定的线程,可以一次杀死多个线程,以逗号分隔,但不能有多余空格
password:修改指定用户的密码
processlist: 显示线程列表 mysqladmin -uroot -p processlist
shutdown:关闭mysqld进程
start-slave 启动从服务器进程
stop-slave 关闭从服务器进程
variables:显示mysql的各服务器进程
GUI客户端工具
Navicat for mysql ---推荐使用该GUI工具
Toad for mysql
SQLyog
MySQL Front
phpMyAdmin
总结 -----> mysql初始化,mysql配置文件读取次序,mysql初始用户,mysql客户端命令 mysqladmin GUI