《MySQL DBA修炼之道》——2.5 常用命令-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《MySQL DBA修炼之道》——2.5 常用命令

简介: 本节书摘来自华章出版社《MySQL DBA修炼之道》一书中的第2章,第2.5节,作者:陈晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。常用命令 本节先介绍几个常用命令,如mysql、mysqladmin、mysqldump的简单用法。

本节书摘来自华章出版社《MySQL DBA修炼之道》一书中的第2章,第2.5节,作者:陈晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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;
mysql>SHOW FULL TABLES; `` #多了第二列,用于显示Table_type
输入表名、列名等信息时,可以按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客户端的提示说明


319f5f8b45cd731d0bbeb21641f2a34417c7eda6

如果输入错了,需要清除当前的输入字符,可输入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所示。


27dc23801edf34585d84ef086d03f630ed0a83a4

如下命令可得到表的引擎(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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接