IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【MySQL 每日一技】指定 mysql 命令选项 -> 正文阅读

[系统运维]【MySQL 每日一技】指定 mysql 命令选项

1 问题

当你调用 mysql 命令但是没有指定任何选项时,程序自动退出并返回 'access denied' 提示。

2. 解决方案

使用 mysql 命令连接数据库时必须指定连接参数。你可以通过命令行、选项文件或者结合这两种方式一起来实现。

3. 讨论

如果你 调用 mysql 命令时不使用任何命令选项,你将得到 'access denied' 错误。为了解决该问题,你需要按照下列方式使用 mysql 命令:

mysql -h localhost -u cbuser -p

上述的每个选项都是单 - 的形式:

  • -h 用于指定主机名;
  • -u 用于指定用户名;
  • -p 用于提示用户输入密码。

实际上,对于 MySQL 数据库的程序(如:mysqlmysqldump 以及 mysqladmin),其支持的绝大多数选项还有一种对应的双 - 形式。例如,上述 mysql 命令可以写成如下形式:

mysql --host=localhost --user=cbuser --password

如果想要查看 mysql 命令支持的所有选项,可以使用下列命令:

mysql --help

同样地,如上所述,其他 MySQL 应用程序如 mysqldumpmysqladmin 也支持一样的方式来指定选项。例如,为了备份数据库 cookbook 中的所有数据表并将数据保存在 dump 文件中,可以按照下列方式使用 mysqldump

mysqldump -h localhost -u cbuser -p cookbook > cookbook.sql

有些操作需要 MySQL 管理员账户来执行。mysqladmin 程序可以执行只有 MySQL 的 root 用户才能进行的操作。例如,如果想停止 MySQL 的服务端,可以按照下列方式调用 mysqladmin

mysqladmin -h localhost -u root -p shutdown

如果选项后使用的值和该选项的默认值相同,那么可以直接省略该选项。例如,如果你希望连接的数据库服务器就在本机上,那么你就可以省略 -h localhost 1

mysql -u cbuser -p

需要注意的是,不存在默认的密码。虽然你可以通过 -ppassword--password=password 的方式直接在命令行指定密码,但实际中并不推荐这么做,因为在多用户系统下,其他用户可以通过 ps 等查看当前机器上进程的方式看到你的密码。

3.1 使用选项文件指定连接参数

如果你希望自己指定默认的连接参数,那么你可以将选项和对应的值放在选项文件中,这样可以使得:

  • 对于放入文件中的选项,你就不需要每次都在命令行中指定;
  • 可以混用通过命令行和文件指定的选项,通过这样的方式,你既可以将最常用的一些选项放入文件中,也可以同时在命令行中再次指定,以实现最终以命令行中的参数值为准。

选项文件本身是纯文本文件:

  • 在 Unix 下,你的个人选项文件是在你家目录下名为 .my.cnf 的文件。同样,也有管理员用于为所有用户指定的全局选项文件,这样的全局性文件一般存在于 /etc/etc/mysql ,又或者 MySQL 安装目录的 etc 目录下。

  • 在 Windows 下,选项文件一般在 MySQL 安装目录(C:\Program Files\MySQL\MySQL Server 5.6)的 my.ini 或者 my.cnf 中。

下面的例子显示了 MySQL 选项文件的格式:

# 客户端程序相关的通用连接选项
[client]
host 		= localhost
user 		= cbuser
password 	= cbpass

# 特定 mysql 程序对应的选项
[mysql]
skip-auto-rehash
pager="/usr/bin/less -E" # 指定交互模式下使用的翻页命令

在选项文件的内容如上述 [client] 组中一样指定时,你可以直接使用 mysql 就能以用户名 cbuser 登录,而不需要在命令行指定其他选项了。

MySQL 的选项文件还具有下列特征:

  • 选项是按照组(或者叫块)进行分类的。选项组的第一行使用方括号指定了组名,剩下的各行指定了和该组相关的选项。上述的选项文件就显示了 [client][mysql] 两个组。如果还希望指定用于服务端的的选项,那么可以将对应选项放在名为 [mysqld] 的组中;

  • 通常用于指定客户端连接参数的组名是 [client] 。这个组中的参数除了对 mysql 有效以外,还对 mysqldump 以及 mysqladmin 有效;

  • 在同一个选项文件中可以定义多个组。如上述的案例所述,其中定义了 [client] 以及 [mysql] 两个组;

  • 在同一个组中,编写选项的格式是 name=value ,其中 name (不带任何 -)表示选项名而 value 代表选项值。如果一个选项不接受值(如上述的 skip-auto-rehash),那么直接使用选项名称即可;

  • 在选项文件中,仅允许使用长型选项而不允许使用短型选项。例如,在命令行中,你既可以使用 -h hostname 也可以使用 --host =hostname 来指定主机名,但是在选项文件中只可以使用 host=hostname

  • 包括 mysqlmysqld 在内的许多程序除了有命令选项外还有程序变量(对于服务器来说叫做系统变量)。程序变量也可以像选项一样在选项文件中指定。在程序内部,程序变量中会使用下划线 _ ,但是在选项文件中,针对选项名或者变量,既可以使用 - 也可以使用 _ 。例如, skip-auto-rehashskip_auto_rehash 是等价的;为了设定服务器的 sql_mode 系统变量,可以在 [mysqld] 选项组中使用 sql_mode =valuesql-mode =value

  • 在选项文件中,用于分割选项名和选项值的 = 两边是允许存在空格的,这在命令行中是不允许的;

  • 如果选项值包含空格或其他特殊字符,则可以考虑使用单引号或双引号,例如上面 pager 选项的值;

  • 通常使用选项文件都是用于指定用来进行数据库连接时需要使用的参数(如:主机名,用户名以及密码)。实际上,该文件还可指定用于其他目的的选项。例如,上述的案例中,在 [mysql] 选项组中,就指定了在交互模式下展示输出时应该使用的翻页程序;

  • 如果一个选项在选项文件中出现多次,那么以最后一次出现的为准;

  • 使用 # 或者 ; 开头信息都是备注。

如果想要确定 mysql 程序会从选项文件中读出哪些选项,可以使用下列命令:

mysql --print-defaults

同样,你还可以使用 my_print_default 实用程序,该程序接受选项组的名称作为参数,仅读取指定选项组中的选项。例如,一般情况下 mysqldump 会查找 [client][mysqldump] 两个选项组,因此可以这样使用该实用程序:

my_print_defaults client mysqldump

3.2 混用命令行和选项文件指定参数

实际上,你可以既使用命令行又使用选项文件来指定参数。例如,你可能只希望将用户名和主机名在选项文件中指定,但希望在命令行中输入密码,就可以采用这样的方式。当命令行和选项文件中出现同一个选项时,命令行参数的选项总是优先级更高。

3.3 为选项文件设置权限

在 Unix 等支持多用户的操作系统中,需要特别注意不能让别的用户通过读取选项文件来知道你连接数据库的账户和密码等信息。对此,可以使用下列命令对选项文件进行权限设置:

chmod 600 .my.cnf
chmod go-rwx .my.cnf

  1. 在连接到 MySQL 服务端时需要指定的参数中,其中之一是服务端所在的主机。大多数程序都将 localhost127.0.0.1 视为表示本地主机的含义。在 Unix 下, MySQL 程序有些不同:按照惯例,在 Unix 下, localhost 的含义比较特殊,如果想要连接运行在本机上的 MySQL 服务端,则会尝试使用 Unix 域的套接字文件。如果希望使用 TCP/IP 连接到本地服务器,则需要使用 IP 地址 127.0.0.1 而不是 localhost 。或者,你可以指定 –protocol=tcp 的方式来强制使用 TCP/IP 来建立连接。此外,Unix 域下的套接字路径名各有不同,通常来说是 /tmp/mysql.sock ,也可以通过 -S file_name–socket=file_name 的方式指定。 ??

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:28:46  更:2022-04-06 16:28:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:52:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码