跳转至

MySQL 的第一步

原文: http://zetcode.com/databases/mysqltutorial/firststeps/

在本章中,我们将使用 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 + Dquit命令退出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_schemamysqlperformance_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 数据库系统进行了第一步。



回到顶部