目录
[mysqld - MySQL 服务器](#mysqld - MySQL 服务器)
[编辑 mysql - MySQL 命令⾏客⼾端](#编辑 mysql - MySQL 命令⾏客⼾端)
MySQL程序简介
1.MySQL安装完成通常会包含如下程序:
Linux系统程序⼀般在 /usr/bin⽬录下,可以通过命令查看
windows系统⽬录: 你的安装路径\MySQL Server 8.0\bin ,可以通过命令查看
每个 MySQL 程序都有许多不同的选项。⼤多数程序都提供⼀个 --help 选项,您可以使⽤该选项 来获取程序不同选项的描述。例如: mysql --help,可以通过在命令⾏或配置⽂件中指定选项来覆 盖 MySQL 程序的默认选项值
2.常⽤的MySQL程序
对于别的一些工具可以直接去查询mysql的官方文档进行学习
mysqld - MySQL 服务器
1.mysqld也被称为MySQL服务器,是⼀个多线程程序,对数据⽬录(可以理解为mysql的主要工作目录)进⾏访问管理(包含数据库和表)。数据⽬录也是其他信息(如⽇志⽂件和状态⽂件的默认存储位置
2.当 MySQL 服务器启动时,会侦听指定的端⼝、处理来⾃客⼾端程序的⽹络连接,并管理 不同客⼾端对数据库的访问
3.mysqld程序有许多选项可以在启动时指定 。运⾏以下命令查看完整的选项列表
mysqld --verbose --help
mysql - MySQL 命令⾏客⼾端
1.mysql的介绍
mysql是⼀个简单的 SQL shell, 可以输⼊命令和执⾏SQL语句,当执⾏SQL语句时,查询结果以
ASCII 表格式显⽰
MySQL的几种连接方式
使用短格式:mysql -u用户名 -p [指定要连接的数据库名]
使用长格式: mysql --user=用户名 --password [指定要连接的数据库名 ]
2.mysql 客⼾端选项
指定选项的方式:
1.在mysql后⾯的命令⾏中列出选项
2.在mysql后⾯指定配置⽂件的路径,以便在程序启动时读取配置⽂件中的选项并解析对应程序选项的值,并应用在启动参数中
对于第二种指定选项的方式的举例
在mysql.exe启动的时候,会去配置文件的路径中读取配置文件的内容,并解析相关选项值加以应用
mysql客户端命令常用选项
注:如果选项的值中包含空格,那么值需要包含在双引号中
在命令⾏中指定选项遵循的几个规则:
- 选项以单破折号" - "或双破折号" -- "号开头, - 表⽰短格式, -- 表⽰⻓格式,例如:-?和 -
-help 都表⽰MySQL 程序显⽰他的帮助消息- 选项名称区分⼤⼩写。 -v 和 -V 都是合法的,但含义不同,它们分别是 --verbose(尽可能详细的显示结果) 和 -- version 选项的相应缩写形式
3.某些选项需要在后⾯指定⼀个值。如 -h 127.0.0.1 或 --host=127.0.0.1 表⽰向客 ⼾端程序指定 MySQL 服务器主机
4.对于带值的⻓格式选项,通常⽤ = 符号分隔选项名称和值。对于带值的短选项,选项值可以紧跟在选项之后,也可以⽤空格隔开,例如:--host=127.0.0.1 , -h127.0.0.1 和 -h 127.0.0.1 是等价的。 但是对于密码选项的短格式,如果要指定密码,选项与值之间不能有空格的
bash
# 以下两个等价
mysqld --verbose --help
mysqld -v
# 以下两个等价
mysql --version
mysql -V
mysql -h 127.0.0.1
msyql --host=127.0.0.1
mysql -ptest # test表⽰密码,但没有指定要访问的数据库
mysql -p test # test 表⽰指定了访问的数据库,但没有指定密码
注:在命令⾏中,第⼀个不带破折号 - 的值被解析为要访问的数据库名,所以 --database 选项⼀般可以省略
1.在选项名称中,破折号 ( - ) 和下划线 ( _ ) 在⼤多数情况下可以互换使⽤,但前导破折号不能转为下划线,例如: --skip-grant-tables 和 --skip_grant_tables 是等价的
2.对于采⽤数值的选项,该值可以带有后缀 K , M 或 G 以指⽰乘数 1024、1024^2或 1024^3,例如,以下命令告诉 mysqladmin对服务器执⾏ 1024 次 ping,每次 ping 之间休眠 3 秒
mysqladmin --count=1K --sleep=3 ping -uroot -p
3.在命令⾏中包含空格的选项值必须⽤引号引起来。例如, --execute (or -e ) 选项与mysql⼀
起使⽤时,表⽰将⼀个或多个 SQL 语句发送给服务器执⾏并显⽰结果
mysql -u root -p -e "SELECT VERSION();SELECT NOW();"
3.选项(配置)
⽂件⼤多数 MySQL 程序都可以从选项⽂件(配置⽂件)中读取启动选项。可以在选项⽂件中指定常⽤选项,这样就不⽤在每次运⾏程序时都在命令⾏中输⼊它们。⼤部分选项⽂件都是纯⽂本格式,可以使⽤任何⽂本编辑器创建
使⽤⽅法: 选项 --defaults-file 可以指定要使⽤的选项⽂件,客⼾端程序会读取并应⽤选项⽂件中的相关 配置
在Linux中: mysql --defaults-file=/etc/mysql/my.cnf -uroot -p 在windows中: mysql "--defaults-file=C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" -uroot -p
在Linux下查看/etc/mysql下包含的文件:
查看其它两个快捷方式下的文件
虽然客户端与服务端的配置文件做了区分,但我们一般不会在对应的配置文件中分别配置,而是把所有的配置都写在默认的配置文件中,便于维护与管理
(1)选项⽂件位置及加载顺序
如果在使用MySQL程序时没有指定配置文件的路径,就会自动读取默认路径下的配置文件
对于默认路径下的配置文件下面介绍
MySQL 按以下表格中的顺序查找并读取选项⽂件。如果⽂件不存在则需要⼿动创建。
读取顺序从上到下,后读取的⽂件中配置的选项优先级越⾼
在 Windows 系统读取选项⽂件:
在 Unix 和 Linux 系统上读取的选项⽂件:
优先级是指对于两个配置文件中配置了相同的选项,那么优先级高的文件就会覆盖优先级低的文件中的选项
(2)选项⽂件语法
运⾏ MySQL 程序时在命令⾏上指定的任何⻓选项都可以在选项⽂件中指定,要获取选项列表可以
使⽤命令:
客⼾端程序
root@guangchen-vm:~# mysql --help
服务端程序
root@guangchen-vm:~# mysqld --verbose --help
语法1:选项⽂件中指定选项时,省略两个前导破折号,并且每⼀⾏表⽰⼀个选项
例如: --quick 和 --host=127.0.0.1 在选项⽂件中应表⽰成 quick 和 host=127.0.0.1
语法二:选项⽂件中的空⾏会被忽略。⾮空⾏可以采⽤以下任何形式:
注:1. 选项名称和值中的前导和尾随空格会⾃动删除
- 在windows系统中设置路径应该使⽤转义字符
如:
语法三:[client] MySQL发⾏版中所有客⼾端程序都会读取并应⽤这个组下的选项(除了mysqld),在这个组下可以指定适⽤于所有客⼾端程序的通⽤选项,例如配置⽤⼾名和密码(但要确保只有⾃⼰才可以访问这个⽂件以防⽌密码泄漏)
如:这样设置的话,在登录mysql时就不需要输入密码了
语法四:可以通过 [客⼾端程序名] 的形式为不同的客⼾端程序指定选项,例如 [mysql] ,当运⾏ mysql程序时会读取并应⽤该组下的配置,如果选项名与 [client] 重复,[client] 中的选项将会被覆盖(说明优先级是高于[client]的)
如:
其余的语法:
举例:设置客⼾端全局编码格式
在Linux下编辑全局配置⽂件默认位置 /etc/mysql/my.cnf ,在文件末尾加入:
注:每次修改配置文件之前都要做备份的,防止出错的
4.mysql 客⼾端命令
在mysql客户端中可以执行sql语句,也可以执行相应的命令
(1)使⽤mysql客⼾端程序连接到数据库服务器之后,可以发送SQL语句到服务器执⾏,并以 ";"(分 号)、\g 或 \G结束
- ; 与 \g 结束表⽰以表格形式展⽰结果
- \G 结束表⽰以⾏形式展⽰结果
- 如果当前已经输⼊了⼀部分SQL 语句想重新输⼊可以输⼊Ctrl+C中断当前输⼊
(2)在mysql中可以输⼊ help or \h 查看命令列表
关于其中一些命令的介绍
(3)使⽤help contents命令可以查看关于MySQL数据库使⽤的具体帮助,包括⽤⼾管理、SQL语法、 数据类型、组件等相关内容列表
通过help contents中的具体条⽬查看介绍,例如: help Data Types
继续输⼊help 具体的条⽬ 查看关于此条⽬的详细说明
5.从.sql⽂件执⾏ SQL语句
这里是有两种方式的
(1)使⽤source命令导⼊
先准备一个.sql文件,名为test_db.sql
先把该文件直接拖拽上传到Linux中
登录mysql使用source命令进行上传文件
在此之前
再使用source命令(如果失败的话,就看是否为root用户,有无权限的,非root的话就切换为root)
最后验证一下:
(2)使⽤mysql客⼾端导⼊
直接使⽤mysql客⼾端程序导⼊.sql⽂件并执⾏相应的SQL语句,可以使⽤以下命令
mysql db_name < text_file # 在指定的数据库下执⾏ SQL, 前提是数据库必须提前建⽴好
mysql < text_file # 不指定数据库 .sql 中必须有 USE [database_name], 来指定要操作的数据库
最后登录数据库进行验证是否成功