MySQL是当今最广泛使用的关系型数据库管理系统(RDBMS)之一。它是一个强大的数据库平台,允许创建和管理可扩展的数据库,主要使用结构化查询语言(SQL)。
MySQL服务器是数据库所处的环境–也是它们被访问的地方。作为一个服务器管理员,你经常需要检索这个环境的细节–列出服务器上的数据库,显示特定数据库的表,查看用户角色和权限,访问约束条件,等等。
本文将解释如何通过命令提示符列出MySQL数据库的详情办法。
- 列出MySQL数据库的先决条件
- 在你的系统变量环境中添加MySQL路径
- 登录到MySQL
- 显示MySQL服务器内的数据库
- 过滤数据库输出的结果
- 使用信息结构来查询表元数据
- 常见的问题和最佳做法
- 数据库管理员
列出MySQL数据库的先决条件
你必须在你的本地机器上运行MySQL服务器才能开始使用。如果你没有MySQL,有几种方法可以安装它。
- 安装WAMPServer、XAMPP、MAMP或任何其他包括MySQL的软件分发栈。
- 直接从他们的官方网站下载并运行MySQL安装程序,通过设置过程来配置和安装MySQL服务器和其他工具。
为了方便地使用命令行运行MySQL命令,你需要将MySQL可执行文件的路径添加到你的系统环境中。如果你使用选项二安装了MySQL,这一步就没有必要了,所以可以随意跳过下一节。
将MySQL路径添加到你的系统的变量环境中
如果你在Windows电脑上运行XAMPP或WAMP,本节将指导你把MySQL可执行路径添加到你的系统变量环境中。
首先,启动你的Windows文件资源管理器并导航到此电脑。点击你安装WAMP或XAMPP软件包的驱动器(C:)。
如果你正在运行XAMPP,导航到xampp > mysql > bin,并复制bin文件夹的完整路径。对于WAMP,通过{your-wamp-version} > bin > mysql > {your-mysql-version} > bin导航到其完整路径。
bin文件夹的完整路径
点击 “Start“菜单,搜索 “path”。点击Edit the system environment variable。
然后,点击Startup and Recovery(启动和恢复)下的Environment Variables(环境变量),选择PATH变量并点击编辑。
接下来,点击 “新建“,粘贴你的MySQL可执行文件的完整路径(你之前复制的)。
编辑环境变量
然后,通过单击 “确定 “来保存这些更改。
现在路径已被添加,你可以在终端执行MySQL命令。
登录到MySQL
要列出MySQL数据库,用户必须被授权访问所有数据库,或者你必须设置一个全局的SHOW DATABASES
权限,授予所有用户访问权。
在通过命令提示符登录之前,请确保你的MySQL服务器正在运行。
mysql -u -p
注意:用你的用户名替换 u
。MySQL的默认用户名是 root
,而密码是空的(默认没有密码)。
登录到MySQL
显示MySQL服务器中的数据库
现在你已经登录了,你可以通过执行 SHOW DATABASES
命令列出服务器中存在的MySQL数据库。
SHOW DATABASES;
在返回数据中,你会得到存储中存在的所有数据库。
存储的数据库的列表
在返回的六个数据库中,information_schema
和 performance_schema
是安装MySQL时自动生成的默认数据库。
information_schema
数据库是一个不可修改的数据库,它存储了与数据库和其他存储在MySQL服务器中的对象(视图、用户权限、表、约束等)有关的所有信息。
过滤数据库输出的结果
以前,你用 SHOW DATABASES
返回MySQL服务器上的所有数据库,但你经常需要过滤数据库输出,主要是当服务器上有许多数据库时。
LIKE
子句根据一个指定的模式过滤 SHOW DATABASE
的结果。下面是一般的语法。
SHOW DATABASES LIKE '';
它必须是一个代表你想匹配的模式的字符串。该字符串必须以百分比符号(%
)结尾,表示一个或多个字符。
例如,如果你想只显示名称以字母w
开头的数据库,你可以通过运行以下程序来实现。
SHOW DATABASES LIKE 'w%';
下面是过滤后的结果。
使用’w%’过滤后的数据库响应
使用信息结构来查询表元数据
早些时候,你看到了 information_schema
数据库如何在MySQL服务器环境中存储与数据库、表和其他对象有关的所有信息。
information_schema
数据库利用schemata表来存储所有数据库的信息。对于数据库的过滤,你可以进行复杂的搜索,以查询特定数据库的模式表。
例如,如果你想要那些名字以 “samp “或 “word “开头的数据库,你可以结合其他几个子句来进行复杂查询。
SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE 'samp%' OR schema_name LIKE 'word%';
下面是结果。
复杂查询的结果
此外,你还有来自 information_schema
数据库的tables
表,它包含了所有表的信息。同样,你可以执行一个查询,只检索符合指定模式的表。
例如,下面的查询只返回WordPress表的模式信息–只返回名称以 “wp_”开头的表。
SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';
结果是这样的。
只有WordPress表的信息结构的结果
在 information_schema
中发现的其他表格包括columns
, constraints
, table_constraints
, check_constraints
和 referential_constraints
。
常见的问题和最佳做法
执行SQL时最常见的错误原因之一是没有在语句的结尾使用分号。
另一个原因是使用无效的SQL语法或表/列名称拼写错误。为了避免这种情况,请交叉检查表或列的名称,确保其拼写正确。请确保也要交叉检查你的语法。
这里有一些其他的最佳做法要记住。
对SQL关键词使用大写字母
当写SQL代码时,总是对SQL关键字使用大写字母,对表名和列名使用小写字母。这使你的代码更易读,更不容易出错。
所以,与其这样:
select * from information_schema.tables where table_name like 'wp_%';
不如这样做:
SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';
避免使用 SELECT *
避免在你的SQL查询中使用SELECT *。你的请求是不明确的,因为你不能总是知道它将返回什么。相反,指定你想从表中选择的列。
所以,与其这样:
SELECT * EXCEPT(phone) FROM users.profile
不如这样:
dob,
address,
country,
address,
FROM user.profile
SELECT name, dob, address, country, address, FROM user.profile
缩进你的代码
最后,还有一个使查找错误更容易的提示是缩进你的代码。这将使它更有可读性。
数据库管理器
另外,你可以选择通过使用数据库管理器来管理你的数据库,而不用写SQL。这允许用户访问数据库管理功能,而不需要编写SQL查询。这个软件连接到MySQL服务器,并提供一个用户界面来暴露数据库的功能。一旦连接,用户界面将显示服务器上的所有数据库。各个管理工具的外观和感觉各不相同,但过程是相似的。
DevKinsta的数据库管理器
有几个工具可供选择,包括 phpMyAdmin 和 Adminer,这两个工具都可以通过 DevKinsta 访问。DevKinsta的默认管理工具是Adminer,因为它是轻量级的,简单的,快速的,但phpMyAdmin也可以轻松访问。
小结
作为一名服务器管理员,你需要能够有效和准确地检索关于你的MySQL服务器上的数据库的详细信息。查看服务器上有哪些数据库,查看特定的表和其中的信息,以及访问有关用户角色和权限的信息,这些都是至关重要的任务。幸运的是,从你的命令行使用SQL可以使这一切变得轻而易举。