2.5 常用命令
本节先介绍几个常用命令,如mysql、mysqladmin、mysqldump的简单用法。后续章节还会再详述这些命令的使用。
2.5.1 使用mysql命令
首先,需要留意区分MySQL的大小写。标准的说法是,MySQL指MySQL服务器,mysql指客户端。
从Unix/Linux系统下发展出来的MySQL有着优良的设计,客户工具的所有选项都可以保存到一个“~/.my.cnf”的用户级配置文件里的[client]部分中,而且它把适用于MySQL的选项集中在了[MySQL]部分。可以先把默认的用户名、密码、端口等在“.my.cnf”文件中配置好,以便简化登录。
另外,要说明一下,本章阐述的一些命令,为了显示方便,可能会省略用户名、密码、socket文件的功能连接参数。
首先给出连接并登录数据库时会涉及的命令,分别如下。
通过IP、端口远程连接的命令。mysql -h ip_address -P your_port -u username -p
通过TCP/IP协议进行本地连接的命令。mysql -u username -h 127.0.0.1 -P your_port
通过socket文件进行本地连接的命令。mysql -u username -S /path/to/mysql.sock
阅读在线帮助的命令。mysql> help contents
退出的命令。mysql > exit
简单查询的命令。
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> SELECT SIN(PI()/4), (4+1)*5;
MySQL客户端还提供了一些简写命令,这些简写命令只能出现在命令行的中间或末尾,具体如下。
mysql> help
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
ego (\G) Send command to MySQL server, display result vertically.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
edit (\e) Edit command with $EDITOR.
下面来看一个示例。
mysql> pager cat > /tmp/log.txt
mysql> pager less -n -i -S -F
命令less的“-S”选项可以让你用方向键进行浏览,这对于长行的显示很有用。其中的参数说明分别如下。
-i:搜索时忽略大小写,但如果搜索的字符串中包含大写字母,那么这个选项不起作用。
-n:禁用行号功能,加速浏览大文件。
-F:如果屏幕可以显示的话,就直接退出。
使用以下命令,不仅可以将结果输出到屏幕上,还可以通过tee命令记录到文件中。
mysql> pager cat | tee /dr1/tmp/res.txt \
| tee /dr2/tmp/res2.txt | less -n -i -S
使用如下命令,会列出所有可见的数据库。mysql> SHOW DATABASES;
切换到test数据库时的命令如下。mysql> USE test
#如果有许多表,使用use db_name可能会比较慢,可以使用mysql –A进行加速
显示当前数据库的命令如下。mysql> SELECT DATABASE();
创建数据库menagerie的命令如下。MySQL > CREATE DATABASE menagerie;
删除数据库的命令如下。mysql> DROP DATABASE IF EXISTS menagerie;
创建用户,并赋予其对menagerie库的权限的命令如下。mysql> GRANT select,insert,update,delete ON menagerie.* TO 'your_name' @ 'your_client_host';
列出当前数据库下所有表的命令如下。mysql> SHOW TABLES;
查看表结构的命令如下。mysql>DESC pet;
#多了第二列,用于显示Table_type
mysql>SHOW FULL TABLES;
输入表名、列名等信息时,可以按TAB键补全,“-A”可关闭这个功能。
创建表的命令如下。
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
插入初始化数据的命令如下。
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
(3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
查询数据的命令如下。SELECT * FROM shop;
执行SQL文件的3种方式如下。
mysql -e "source batch-file"
mysql -h host -u user -p < batch-file
mysql> source /path/filename;
如果有长的屏幕输出,可以转储到文本或使用more进行查看。
mysql < batch-file | more
mysql < batch-file > mysql.out
表2-1针对mysql客户端的提示给出了解释。
表2-1 mysql客户端的提示说明
如果输入错了,需要清除当前的输入字符,可输入\c来实现。在如下示例中,少输入了单引号,我们使用\c清除所有的输入字符,回到提示符下。
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
'> '\c #注意在\c前还需要输入单引号'
mysql>
修改用户密码的命令如下。mysql> SET PASSWORD FOR user_name@ip_address = password('1234');
显示当前连接、客户端、数据库字符集等信息的命令如下。mysql> STATUS
显示MySQL支持的排序方式的命令如下。mysql> SHOW COLLATION;
下面的命令将展示前一条命令的警告信息。mysql> SHOW WARNINGS;
展示可用引擎的命令如下。mysql> SHOW ENGINES;
还可以使用下面的语句代替SHOW ENGINES,并检查你感兴趣的存储引擎的变量值。
mysql> SHOW VARIABLES LIKE 'have%';
+---------------------------+-----------+
| Variable_name | Value |
+---------------------------+-----------+
| have_archive | YES |
| have_bdb | NO |
SHOW命令的精确输出将随所使用的MySQL版本(和启用的特性)的不同而有变化。第2列的值表示各特性支持的级别,如表2-2所示。
如下命令可得到表的引擎(engine)。
mysql> USE information_schema;
mysql> SELECT table_name,engine FROM information_schema.tables WHERE table_schema = 'Your Database Name';
如下命令可查看当前连接和服务器的事务隔离模式。SELECT @@tx_isolation,@@global.tx_isolation;
如下命令可查询是否自动提交事务,SELECT @@autocommit;
如下命令可用于查询sql_mode。
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE FROM INFORMATION_SCHEMA.ROUTINES;
SELECT EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME, SQL_MODE FROM INFORMATION_SCHEMA.TRIGGERS;
也可以通过设置OS环境变量的方式来改变连接的socket文件和TCP端口,命令如下。
shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
2.5.2 使用mysqladmin命令
在使用mysqladmin命令时,如下命令可显示参数设置。mysqladmin -p variables |grep log_queries_not_using_indexes
设置root密码的命令如下。myaqladmin -u root -p password "new password"
如下命令可显示状态变量,一般使用-r参数显示两次命令执行期间的增量值。mysqladmin extended-status -uroot -r -i 10
其中,“extended-status”显示的是服务器状态变量和值。
-r:显示当前状态变量和上一次运行命令状态变量的差值。
-i:重复执行命令的间隔时间。
如下命令可显示当前连接的线程。mysqladmin -uroot -pnemo1234admin processlist
如下命令可用于关闭数据库。mysqladmin shutdown
2.5.3 使用mysqldump命令
在使用mysqldump命令时,如下命令可用于备份数据库。mysqldump -uroot --hex-blob db_name > db_name.sql
增加压缩功能的命令如下。mysqldump -uroot --hex-blob db_name |gzip > db_name.sql.gz
也可以使用如下mysql命令恢复数据。mysql < db_name.sql