MySQL运维实战(3.1) MySQL官方客户端使用介绍

这篇具有很好参考价值的文章主要介绍了MySQL运维实战(3.1) MySQL官方客户端使用介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:俊达

引言

MySQL是MySQL安装包默认的客户端,该客户端程序通常位于二进制安装包的bin目录中,或者通过rpm安装包安装mysql-community-client,是数据库管理系统的重要组成部分。MySQL客户端不仅仅是一个简单的软件工具,更是连接用户与数据库之间的桥梁,对于有效地使用MySQL数据库的功能和特性至关重要。熟练掌握MySQL客户端的使用方法对于数据库管理和数据操作具有重要意义,在接下来的内容中,我们将介绍MySQL官方客户端的使用方法。
MySQL运维实战(3.1) MySQL官方客户端使用介绍

1 使用mysql程序

linux终端下,输入mysql命令登陆数据库。如果提示mysql不存在,要看mysql程序是否在命令行的搜索路径。

[root@box3 ~]# mysql
-bash: mysql: No such file or directory

### 测试环境中,mysql位于/usr/local/mysql, 设置PATH
[root@box3 ~]# cat ~/.bash_profile
...
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
export PATH

[root@box1 ~]# mysql --version
mysql  Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using  EditLine wrapper

2 mysql主要命令行参数说明

命令行参数 说明
--help 查看帮助信息。mysql --help
--version 查看客户端版本
-p, --password 用户密码,小写的p
-P, --port 服务端口,大写的P
-u, --user 用户名
-h, --host 服务地址
-S, --socket socket文件。和-S和 -h -P只能使用其中一种方式登陆。
-v, --verbose 输出更多提示信息,使用-vvv 输出更多信息。在批量执行脚本时,我们可能会需要增加输出信息,便于查看脚本执行过程中的信息。
-s, --silent 安静模式,输出更少的提示信息
-B, --batch 批模式,输出更少提示信息。会影响wait_timeout参数。
-e 执行sql语句。mysql -e 'select now()'
-A, --no-auto-rehash 登陆时不读取mysql数据字典。在数据库中表多的时候,使用-A选项能提高连接的速度。
--tee 将命令和结果输出到文件
--no-defaults 不从默认的配置文件中读取选项
--defaults-file 从指定的配置文件中读取选项
--ssl-mode ssl连接模式
required: 启用ssl
verify_ca:验证服务端证书
verify_identity:验证服务端身份
disabled:不启用ssl
--ssl-ca ssl CA证书。服务端和客户端使用同一个ca证书
--ssl-cert 客户端ssl证书
--ssl-key 客户端ssl私钥

3 关于mysql客户端空闲超时

mysql服务端会终止空闲时间超过一定时长的会话,有2个参数会影响超时时间。空闲时间是指客户端没有发送请求到服务端的连续时间。

  • interactive-timeout

交互模式下的连接空闲超时时间。使用mysql client连接是,超时时间会设置为interactive-timeout指定的值。

  • wait-timeout

非交互模式下的连接空闲超时时间。如果登陆时设置了交互模式,wait-timeout会设置为interactive-timeout指定的值
测试
1、先分别设置interactive-timeout和wait-timeout参数

mysql> set global wait_timeout=8000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global interactive_timeout=1000;
Query OK, 0 rows affected (0.00 sec)

2、在交互式客户端查看超时时间。wait_timeout被设置为interactive_timout的值。

[root@box3 ~]#  mysql -udemo -h172.16.20.51 -pdemo -s -t
mysql> show variables where variable_name in ('wait_timeout', 'interactive_timeout');
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| interactive_timeout | 1000  |
| wait_timeout        | 1000  |
+---------------------+-------+

3、使用非交互式客户端连接,查看超时时间。使用客户端参数-B指定当前会话为非交互式会话。

[root@box3 ~]#  mysql -udemo -h172.16.20.51 -pdemo -s -t -B
show variables where variable_name in ('wait_timeout', 'interactive_timeout');
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| interactive_timeout | 1000  |
| wait_timeout        | 8000  |

wait_timeout的值还是8000。
4、每个会话可以设置各自的超时时间

mysql> show variables where variable_name in ('wait_timeout', 'interactive_timeout');
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| interactive_timeout | 1000  |
| wait_timeout        | 1000  |
+---------------------+-------+
mysql> set session wait_timeout=256;
mysql> show variables where variable_name in ('wait_timeout', 'interactive_timeout');
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| interactive_timeout | 1000  |
| wait_timeout        | 256   |
+---------------------+-------+

5、使用各种语言的api连接到mysql,需要连接后执行命令查看会话的空闲超时时间。

4 关于mysql client的参数文件

在linux环境下,使用mysql client会从默认的配置文件中读取相关参数。使用strace可以看到mysql会访问这些文件: /etc/my.cnf, /etc/mysql/my.cnf, /usr/etc/my.cnf, /root/.my.cnf

[root@box1 ~]# strace mysql  2>&1 | grep my.cnf
stat("/etc/my.cnf", {st_mode=S_IFREG|0644, st_size=1029, ...}) = 0
open("/etc/my.cnf", O_RDONLY)           = 3
stat("/etc/mysql/my.cnf", 0x7ffc29961a00) = -1 ENOENT (没有那个文件或目录)
stat("/usr/etc/my.cnf", 0x7ffc29961a00) = -1 ENOENT (没有那个文件或目录)
stat("/root/.my.cnf", 0x7ffc29961a00)   = -1 ENOENT (没有那个文件或目录)

测试在/root/.my.cnf中配置相关连接参数,mysql client程序会自动从文件中读取相关选项。使用--no-defaults参数避免从默认参数文件中读取命令行选项。

[root@box1 ~]# cat /root/.my.cnf
[mysql]
user=demo
password=demo

[root@box1 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
...
mysql> show grants;
+-------------------------------------------+
| Grants for demo@%                         |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'demo'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> ^DBye

[root@box1 ~]# mysql --no-defaults
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

5 mysql client程序使用场景

批量执行保存在文件中的SQL

(1)以列的方式展现查询数据

sql语句以\G结尾,将行格式的数据转换成按列显示。

mysql> select user, host from mysql.user limit 1;
+-------+------+
| user  | host |
+-------+------+
| auser | %    |
+-------+------+
1 row in set (0.01 sec)

mysql> select user, host from mysql.user limit 1\G
*************************** 1. row ***************************
user: auser
host: %
1 row in set (0.00 sec)

(2)使用show warnings查看warning信息

有时候执行SQL会有warnings,执行show warnings命令可以查看具体的信息

mysql> set sql_mode='';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show warnings\G
*************************** 1. row ***************************
  Level: Warning
   Code: 3090
Message: Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1 row in set (0.00 sec)

(3)使用pager过滤查询的数据

mysql客户端中可以使用pager过滤数据。类似于通过管道将sql的输出发送给pager指定的命令进行处理。文章来源地址https://www.toymoban.com/news/detail-780583.html

mysql> pager more
PAGER set to 'more'

mysql> select * from mysql.user\G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
20 rows in set (0.00 sec)

mysql> pager
Default pager wasnt set, using stdout.

mysql> pager grep "inserts/s"
PAGER set to 'grep "inserts/s"'
mysql> show engine innodb status\G
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
1 row in set (0.00 sec)

mysql> pager
Default pager wasnt set, using stdout.

到了这里,关于MySQL运维实战(3.1) MySQL官方客户端使用介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • kafka之java客户端实战

    kafka之java客户端实战

            Kafka提供了两套客户端API, HighLevel API和LowLevel API 。 HighLevel API封装了kafka的运行细节,使用起来比较简单,是企业开发过程中最常用的客户端API。 而LowLevel API则需要客户端自己管理Kafka的运行细节,Partition,Offset这些数据都由客户端自行管理。这层API功能更灵活,

    2024年01月17日
    浏览(11)
  • 最好用的Redis客户端:RedisInsight安装部署教程, 官方亲儿子真香, 2种安装方式(包含Docker方式), 超详细教程

    最好用的Redis客户端:RedisInsight安装部署教程, 官方亲儿子真香, 2种安装方式(包含Docker方式), 超详细教程

    大家好,我是老码农。 《码农说》公众号的第9篇文章迎着即将到来2024的步伐暖暖来袭。 很多时候,我们不需要Redis Stack这个套装,只需要一个Redis客户端就够了。 那接下来我们分享如何安装RedisInsight这个优秀的客户端工具。 为什么是款优秀的客户端 操作系统:支持Windows、

    2024年01月17日
    浏览(12)
  • MYSQL连接报错:客户端不支持服务器请求的身份验证协议;考虑升级MYSQL客户端数据库

    在进行MYSQL数据库连接时,有时候可能会遇到如上所述的错误:“客户端不支持服务器请求的身份验证协议;考虑升级MYSQL客户端数据库”。这个错误通常发生在客户端使用的MYSQL版本与服务器所要求的身份验证协议不兼容的情况下。幸运的是,您可以通过升级MYSQL客户端来解

    2024年02月03日
    浏览(13)
  • 【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】

    【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】

    使用Navicat连接时报1251错误,如下图: Navicat是一款流行的数据库管理工具,它能够方便地连接和管理各种数据库。然而,有时候当我们尝试连接MySQL数据库时,可能会遇到错误1251:客户端不支持服务器请求的身份验证协议的问题。这个问题可能会让一些用户感到困惑,影响到

    2024年02月13日
    浏览(13)
  • 在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接

    在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接

    在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接   先打开控制台,使用 uname -m 来查看自己CPU芯片的架构   苹果的M系列芯片使用的是ARM64架构,因此,需要安装相应版本的一些列工具。         因为我是M1芯片,所以安装docker desktop时候,当

    2024年02月12日
    浏览(11)
  • 安装Mysql客户端ODBC报错

    安装Mysql客户端ODBC报错

    This aplication requires Visual Studio 2019 x64 Redistributable. Please install the Redistributable thenrun this installer again. 再次运行此安装程序。 问题:缺少环境 解决方法:安装Microsoft Visual C++2015-2022 Redistributable (x64) - 14.36.32532      

    2024年02月10日
    浏览(15)
  • 【RabbitMQ 实战】09 客户端连接集群生产和消费消息

    【RabbitMQ 实战】09 客户端连接集群生产和消费消息

    下面的链接是最快最简单的一种集群部署方法 3分钟部署一个RabbitMQ集群 上的的例子中,没有映射端口,所以没法从宿主机外部连接容器,下面的yml文件中,暴露了端口。 每个容器应用都映射了宿主机的端口,分别是5602,5612,5622 docker compse文件如下 通过docker-compose up命令,

    2024年02月07日
    浏览(11)
  • mysql 命令行常用操作和客户端

            学习了安装mysql,学习下命令行常用的操作。   1、SHOW DATABASES 用SHOW语句找出在服务器上当前存在什么数据库: 2、创建数据库 CREATE DATABASE 创建一个数据库MYSQLDATA 3、选择数据库 USE MYSQLDATA 选择你所创建的数据库 按回车键出现Database changed 时说明操作成功! 4、查看现

    2024年01月19日
    浏览(46)
  • 【ES实战】ES创建Transports客户端时间过长分析

    2023年10月19日 在创建ES Transport客户端的时,当出现以下场景时,影响连接速度。 使用ES Transport 客户端创建与集群的链接。 连接地址里面有不存在的IP 在增加ES节点时,采用逐个增加的方式 整个建立链接的过程会非常耗时。 采用jar依赖如下 创建连接代码如下 输出结果 是否可

    2024年02月07日
    浏览(11)
  • 【C#项目实战】OPC_DA客户端开发

    大家好,我是雷工。 之前练习过一个OPC客户端的样例,并总结了博文,记录了C#开发OPC客户端的一些知识: C#学习记录——【实例】C#实现OPC Client 最近看到一个不同的思路开发的OPC DA客户端,开发并测试了下,下面将开发过程记录如下。 开发OPC客户端程序,其访问接口方式

    2024年02月03日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包