MySQL 的第一步
在本章中,我们将使用 MySQL 迈出第一步。 我们将启动服务器,使用客户端工具连接到服务器,创建新用户并发布第一个 SQL 语句。
启动/停止 MySQL 服务器
MySQL 服务器是在后台运行的守护程序。 启动 MySQL 的方式取决于您的系统和完成的安装类型。
$ sudo /etc/init.d/mysqld start
$ sudo /etc/init.d/mysqld stop
在基于传统init
的系统上,我们将使用上述命令来启动和停止 MySQL 服务器。
$ sudo service mysql start
$ sudo service mysql stop
Debian 已迁移到 Upstart,这是一个基于事件的守护程序,用于启动任务和服务并进行监督。 在使用 Upstart 的系统上,我们将使用上述命令启动和停止 MySQL 服务器。
$ sudo /usr/local/mysql/support-files/mysql.server start
$ sudo /usr/local/mysql/support-files/mysql.server stop
如果从源代码安装了 MySQL,则可以使用mysql.server
命令启动和停止 MySQL。
检查 MySQL 状态
我们将展示如何检查 MySQL 服务器的状态。
$ service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Pi 2017-01-27 16:32:12 CET; 2h 7min ago
Main PID: 9439 (mysqld)
CGroup: /system.slice/mysql.service
└─9439 /usr/sbin/mysqld
jan 27 16:32:10 t400 systemd[1]: Starting MySQL Community Server...
jan 27 16:32:12 t400 systemd[1]: Started MySQL Community Server.
jan 27 16:32:26 t400 systemd[1]: Started MySQL Community Server.
我们使用service mysql status
命令检查状态。
$ mysqladmin -u root -p ping
Enter password:
mysqld is alive
我们使用mysqladmin
工具检查 MySQL 服务器是否正在运行。 -u
选项指定对服务器执行ping
操作的用户。 -p
选项是用户的密码。 如果省略密码,则mysqladmin
提示输入一个。 在提示符后键入的字符不可见。 这是用于mysqladmin
的更安全的解决方案。 这样,任何人都不会看到您键入的密码,并且该密码不会存储在外壳程序的历史记录中。
mysqladmin
工具
mysqladmin
是用于执行管理操作的客户端。
$ mysqladmin -uroot -p shutdown
我们使用mysqladmin
工具关闭 MySQL 服务器。
$ mysqladmin -u root -p version
Enter password:
...
Server version 5.7.17-0ubuntu0.16.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 45 sec
...
我们使用mysqladmin
检查 MySQL 服务器的版本。
$ mysqladmin -u root -p create testdb
可以使用mysqladmin
创建数据库。
$ mysqladmin -u root -p drop testdb
此命令删除数据库。
$ mysqladmin -u root -p password
Enter password:
New password:
Confirm new password:
我们可以使用mysqladmin
更改用户密码。 我们输入旧密码,然后输入两次新密码。
mysql
工具
mysql
是 MySQL 命令行工具。 这是一个简单的外壳。 它支持交互和非交互使用。
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
我们使用mysql
工具连接到服务器。 请注意,我们在-p
选项之后省略了密码。 我们在Enter password:
提示符后键入密码。
mysql
命令行工具以mysql>
作为提示符。 在此提示下,我们可以发出mysql
内置命令和 SQL 语句。 我们需要熟悉mysql
工具。 Ctrl + L
清除屏幕,Ctrl + D
或quit
命令退出mysql
。 我们需要区分mysql
命令和 SQL 语句。 SQL 语句以分号终止。
mysql> help
For information about MySQL products and services, visit:
http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
https://shop.mysql.com/
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 (\r) 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 (\n) Disable pager, print to stdout.
notee (\t) 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.
...
键入help
以获得mysql
命令的完整列表。
mysql> system pwd
/home/janbodnar
system
命令可以执行 Shell 命令。 我们已经启动了pwd
命令来查找当前的工作目录。
mysql> quit
Bye
quit
命令终止mysql
Shell。
$ mysql --version
mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper
mysql
也可以非交互方式使用。 在这里,我们获得了该工具的版本。
建立数据库
现在,我们将创建数据库。
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0,00 sec)
SHOW DATABASES
语句显示我们系统上的所有可用数据库。 请注意,SQL 语句以分号终止。 存在四个数据库。 information_schema
,mysql
和performance_schema
是 MySQL 系统数据库。 sys
是用于调整和诊断用例的一组架构对象。 尚无用户定义的数据库。
mysql> CREATE DATABASE mydb;
Query OK, 1 row affected (0,00 sec)
该语句创建一个新的数据库。 在整个教程中,我们将使用mydb
数据库。 要创建新数据库,我们需要具有某些特权。 请记住,我们已经以root
用户(超级用户并具有所有特权)连接到服务器。
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0,00 sec)
显示所有数据库,其中有mydb
数据库。
mysql> USE mydb;
Database changed
为了使用数据库,我们必须首先选择它。 我们使用USE
命令选择一个特定的数据库。
mysql> SHOW TABLES;
Empty set (0.00 sec)
SHOW TABLES
语句显示数据库中所有可用的表。 由于它是新创建的数据库,因此找不到表。
mysql> source cars.sql
Database changed
Query OK, 0 rows affected (0.20 sec)
Query OK, 1 row affected (0.08 sec)
...
在第一章中,我们提供了一些 SQL 脚本来创建一些表。 我们使用source
命令执行cars.sql
脚本,该脚本为我们创建了Cars
表。
mysql> SHOW TABLES;
+----------------+
| Tables_in_mydb |
+----------------+
| Cars |
+----------------+
1 row in set (0,00 sec)
现在SHOW TABLES
语句显示一个可用表。
mysql> SELECT * FROM Cars;
+----+------------+--------+
| Id | Name | Cost |
+----+------------+--------+
| 1 | Audi | 52642 |
| 2 | Mercedes | 57127 |
| 3 | Skoda | 9000 |
| 4 | Volvo | 29000 |
| 5 | Bentley | 350000 |
| 6 | Citroen | 21000 |
| 7 | Hummer | 41400 |
| 8 | Volkswagen | 21600 |
+----+------------+--------+
8 rows in set (0,00 sec)
这就是表中的数据。
创建一个新用户
与 Unix 根帐户类似,建议不要在日常工作中使用 MySQL 超级用户根帐户。 我们仅在必要时才使用root
帐户。 我们创建一个将要使用的新帐户。 该用户将具有有限的权限。 使用root
用户时,我们可能会意外地对我们的数据造成很多损害。
mysql> CREATE USER user12@localhost IDENTIFIED BY '34klq*';
上面的命令创建一个名为user12
的新用户。 帐户具有密码34klq*
。 用户已创建,但没有特权。
mysql> GRANT ALL ON mydb.* TO user12@localhost;
该语句为mydb
数据库上的所有数据库对象授予user12
所有特权。 这些特权足以满足本教程中的示例要求。
mysql> quit
Bye
$ mysql -u user12 -p
现在,我们可以使用新的用户帐户连接到 MySQL。
$ mysql -u user12 -p mydb -e "SELECT * FROM Cars"
Enter password:
+----+------------+--------+
| Id | Name | Cost |
+----+------------+--------+
| 1 | Audi | 52642 |
| 2 | Mercedes | 57127 |
| 3 | Skoda | 9000 |
| 4 | Volvo | 29000 |
| 5 | Bentley | 350000 |
| 6 | Citroen | 21000 |
| 7 | Hummer | 41400 |
| 8 | Volkswagen | 21600 |
+----+------------+--------+
我们非交互地连接到mydb
数据库并执行一条 SQL 语句。 在-e
选项之后指定要执行的语句。
在本章中,我们使用 MySQL 数据库系统进行了第一步。