在之前的安装配置阶段将MySQL服务器设置成了一个名为MySQL80的Windows服务,所以可以通过Windows服务的方式来启动和关闭Windows服务器程序。
除了通过可视化界面来管理Windows服务,还可以直接在命令行操作,以管理员身份运行cmd命令提示符,输入net start MySQL80
启动服务,输入net stop MySQL80
关闭服务。
MySQL使用客户端/服务器构架,服务器负责和存储的数据打交道,客户端先连接到服务器,再通过向服务器发送增删改查命令来对存储的数据进行处理。
客户端与服务器之间的连接一般是网络连接,当然如果客户端和服务器位于同一台机器上,也可以借助管道(pipe)来进行连接。
客户端与服务器连接时需要提供用户名和密码才能登录服务器,这点和Linux的用户系统一样,服务器负责用户管理和权限管理,只有管理员用户才可以进行高阶操作。
MySQL的日常使用场景如下:
MySQL默认安装到C:\Program Files\MySQL\MySQL Server 8.0
目录,该目录下的bin文件夹存放了一系列的可执行文件,其中就包含MySQL的客户端程序和服务器程序,为了操作方便,先将bin目录添加到Windows的Path环境变量中。
bin文件夹中重要的可执行文件有以下几个:
其中mysqld.exe
是MySQL服务器程序,mysql.exe
是MySQL客户端程序,mysqladmin.exe
是MySQL的管理工具,其他的暂时不需要理会。
接下来通过命令行来手动启动MySQL服务器程序,在启动之前需要先停止原先在计算机上运行的MySQL80服务器程序(服务管理界面停止MySQL80服务或是在命令行执行net stop MySQL80
)。
手动启动mysqld时可以传入参数,其中比较重要的一个是--datadir
,表示数据库存储位置,如果不指定这个参数,则会默认以C:\Program Files\MySQL\MySQL Server 8.0\data\
作为存储路径,需要确保这个路径存在。另外,Windows上MySQL安装程序运行结束后默认会创建C:\ProgramData\MySQL\MySQL Server 8.0\Data
路径,作为MySQL80服务的数据库路径。另一个可选的参数是--console
,表示mysqld直接在前台运行,不切换到后台,这样可以方便观察mysqld的打印输出。
mysqld --datadir="C:\ProgramData\MySQL\MySQL Server 8.0\Data" --console |
其他参数可通过mysqld --verbose --help来查看。 |
服务器程序启动成功后,接下来启动客户端程序以连接服务器。
mysql.exe是MySQL的客户端程序,它的启动方式如下:
mysql -h主机名 -u用户名 -p密码 |
注意上面的-h -u -p与后面跟的参数之间没有空格。
参数名 | 含义 |
---|---|
-h | 指定MySQL服务器所在的主机名或IP地址,默认为localhost或者127.0.0.1,还可以写成"--host=主机名"的形式 |
-u | 指定用户名,超级管理员的用户名是root,等效于"--user=用户名"。 |
-p | 指定密码,等效于"--password=密码"。 |
-h和-u后面的参数可以带空格,但-p不行,比如 指定完前面的参数后,还可以在后面直接指定登录后要使用的数据库,以省去USE数据库操作,比如 |
最好不要在命令行中输入密码,以防止泄露。正确的做法是只输入-p但不跟密码参数,这样MySQL会在接下来要求输入密码,这时输入的密码不会回显,所以相对安全。 |
以下几个符号表示一条语句的结束:
比如:
mysql> SELECT NOW(); mysql> SELECT NOW()\g mysql> SELECT NOW()\G |
注意,\G返回的结果不以表格形式显示,而是以列的方式展示,如下:
mysql> SELECT NOW()\g +---------------------+ | NOW() | +---------------------+ | 2022-01-19 14:49:59 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT NOW()\G *************************** 1. row *************************** NOW(): 2022-01-19 14:50:05 1 row in set (0.00 sec) |
在未遇到结束符之前,一条语句可以跨越多行,如下:
mysql> SELECT -> NOW() -> ; +---------------------+ | NOW() | +---------------------+ | 2022-01-19 14:51:13 | +---------------------+ 1 row in set (0.00 sec) |
如下:
mysql> SELECT NOW(); SELECT NOW(); SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2022-01-19 14:52:08 | +---------------------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2022-01-19 14:52:08 | +---------------------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2022-01-19 14:52:08 | +---------------------+ 1 row in set (0.00 sec) |
\c
放弃本次操作如下:
mysql> SELECT NOW() \c mysql> |
使用单引号或双引号(不推荐)来表示字符串,如下:
mysql> SELECT 'aaa'; +-----+ | aaa | +-----+ | aaa | +-----+ 1 row in set (0.00 sec) mysql> SELECT "aaa"; +-----+ | aaa | +-----+ | aaa | +-----+ 1 row in set (0.00 sec) |