13. MySQL管理

MySQL管理

系统数据库

MySQL数据库安装完成后,自带了以下四个数据库,具体作用如下:

数据库 含义
mysql 存储 MySQL 服务器正常运行所需要的各种信息(时区、主从、用户、权限等)
information_schema 提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等
performance_schema 为 MySQL 服务器运行时状态提供了一个底层监控功能,主要用于收集数据库服务器性能和参数
sys 包含了一系列方便 DBA 和开发人员利用 performance_schema 性能数据库进行性能调优和诊断的视图

常用工具

  • MySQL

该MySQL不是指MySQL服务,而是指MySQL的客户端工具。

1
2
3
4
5
6
7
8
语法:
mysql [options][database]
选项:
-u, --user=name #指定用户名
-p, --password[=name] #指定密码
-h, --host=name #指定服务器IP或域名
-P, --port=port #指定连接端口
-e, --execute=name #执行SQL语句并退出

-e选项可以在MySQL客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本,这种方式尤其方便。

1
2
示例:
mysql -h192.168.200.202 -P3306 -uroot -p1234 itcast -e "select * from stu"
  • mysqladmin

mysqladmin是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。

1
2
3
4
5
通过帮助文档查看选项:
mysqladmin --help
示例:
mysqladmin -uroot -p123456 drop 'test01';
musqladmin -uroot -p123456 version;
  • mysqlbinlog

由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog日志管理工具。

1
2
3
4
5
6
7
8
9
语法:
mysqlbinlog [options] log-files1 log-files2 ...
选项:
-d, --database=name #指定数据库名称,只列出指定的数据库相关操作
-o, --offset=# #忽略掉日志中的前n行命令
-r, --result-file=name #将输出的文本格式日志输出到指定文件
-s, --short-form #显示简单个格式,省略掉一些信息
--start-datatime=date1 --stop-datetime=date2 #指定日期间隔内的所有日志
--start-postion=pos1 --stop-postion=pos2 #指定位置间隔内的所有日志
  • mysqlshow

mysqlshow客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或索引。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
语法:
mysqlshow [options][db_name[table_name[col_name]]]
选项:
--count #显示数据库及表的统计信息(数据库,表均可以不指定)
-i #显示指定数据库或者指定表的状态信息
示例:
#查询每个数据库的表的数量及表中记录的数量
mysqlshow -uroot -p2143 --count

#查询test库中每个表中的字段数,及行数
mysqlshow -uroot -p2143 --count

#查询test库中book表的详细情况
mysqlshow -uroot -p2143 test book --count
  • mysqldump

mysqldump客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表,及插入表的SQL语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
语法:
mysqldump [options] db_name [tables]
mysqldump [options] --database/-B db1 [db2 db3 ...]
mysqldump [options] -all-databases/-A
连接选项:
-u, --user=name #指定用户名
-p, -password[=name] #指定密码
-h, --host=name #指定服务器ip或域名
-P, --port=# #指定连接端口
输出选项:
--add-drop-database #在每个数据库创建语句前加上drop database语句
--add-drop-table #在每个表创建语句前加上drop table语句,默认开启;不开启(--skip-add-drop-table)
-n, --no-create-db #不包含数据库的创建语句
-t, --no-create-info #不包含数据库的创建语句
-d, --no-data #不包含数据
-T, --tab=name #自动生成两个文件:一个.sql文件,创建表结构的语句;一个.txt文件,数据文件
  • mysqlimport/souce

mysqlimport是客户端数据导入工具,用来导入mysqldump加-T参数后导出的文本文件。

1
2
3
4
语法:
mysqlimport [options] db_name testfile1 [textfile2...]
示例:
mysqlimport -uroot -p2143 test tmp/city.txt

如果需要导入sql文件,可以使用mysql中的source指令:

1
2
语法:
source /root/xxxxx.sql

权限一览表

具体权限的作用详见官方文档

GRANT 和 REVOKE 允许的静态权限

Privilege Grant Table Column Context
ALL [PRIVILEGES] Synonym for “all privileges” Server administration
ALTER Alter_priv Tables
ALTER ROUTINE Alter_routine_priv Stored routines
CREATE Create_priv Databases, tables, or indexes
CREATE ROLE Create_role_priv Server administration
CREATE ROUTINE Create_routine_priv Stored routines
CREATE TABLESPACE Create_tablespace_priv Server administration
CREATE TEMPORARY TABLES Create_tmp_table_priv Tables
CREATE USER Create_user_priv Server administration
CREATE VIEW Create_view_priv Views
DELETE Delete_priv Tables
DROP Drop_priv Databases, tables, or views
DROP ROLE Drop_role_priv Server administration
EVENT Event_priv Databases
EXECUTE Execute_priv Stored routines
FILE File_priv File access on server host
GRANT OPTION Grant_priv Databases, tables, or stored routines
INDEX Index_priv Tables
INSERT Insert_priv Tables or columns
LOCK TABLES Lock_tables_priv Databases
PROCESS Process_priv Server administration
PROXY See proxies_priv table Server administration
REFERENCES References_priv Databases or tables
RELOAD Reload_priv Server administration
REPLICATION CLIENT Repl_client_priv Server administration
REPLICATION SLAVE Repl_slave_priv Server administration
SELECT Select_priv Tables or columns
SHOW DATABASES Show_db_priv Server administration
SHOW VIEW Show_view_priv Views
SHUTDOWN Shutdown_priv Server administration
SUPER Super_priv Server administration
TRIGGER Trigger_priv Tables
UPDATE Update_priv Tables or columns
USAGE Synonym for “no privileges” Server administration

GRANT 和 REVOKE 允许的动态权限

Privilege Context
APPLICATION_PASSWORD_ADMIN Dual password administration
AUDIT_ABORT_EXEMPT Allow queries blocked by audit log filter
AUDIT_ADMIN Audit log administration
AUTHENTICATION_POLICY_ADMIN Authentication administration
BACKUP_ADMIN Backup administration
BINLOG_ADMIN Backup and Replication administration
BINLOG_ENCRYPTION_ADMIN Backup and Replication administration
CLONE_ADMIN Clone administration
CONNECTION_ADMIN Server administration
ENCRYPTION_KEY_ADMIN Server administration
FIREWALL_ADMIN Firewall administration
FIREWALL_EXEMPT Firewall administration
FIREWALL_USER Firewall administration
FLUSH_OPTIMIZER_COSTS Server administration
FLUSH_STATUS Server administration
FLUSH_TABLES Server administration
FLUSH_USER_RESOURCES Server administration
GROUP_REPLICATION_ADMIN Replication administration
GROUP_REPLICATION_STREAM Replication administration
INNODB_REDO_LOG_ARCHIVE Redo log archiving administration
NDB_STORED_USER NDB Cluster
PASSWORDLESS_USER_ADMIN Authentication administration
PERSIST_RO_VARIABLES_ADMIN Server administration
REPLICATION_APPLIER PRIVILEGE_CHECKS_USER for a replication channel
REPLICATION_SLAVE_ADMIN Replication administration
RESOURCE_GROUP_ADMIN Resource group administration
RESOURCE_GROUP_USER Resource group administration
ROLE_ADMIN Server administration
SESSION_VARIABLES_ADMIN Server administration
SET_USER_ID Server administration
SHOW_ROUTINE Server administration
SYSTEM_USER Server administration
SYSTEM_VARIABLES_ADMIN Server administration
TABLE_ENCRYPTION_ADMIN Server administration
VERSION_TOKEN_ADMIN Server administration
XA_RECOVER_ADMIN Server administration

图形化界面工具

  • Workbench(免费): http://dev.mysql.com/downloads/workbench/
  • navicat(收费,试用版30天): https://www.navicat.com/en/download/navicat-for-mysql
  • Sequel Pro(开源免费,仅支持Mac OS): http://www.sequelpro.com/
  • HeidiSQL(免费): http://www.heidisql.com/
  • phpMyAdmin(免费): https://www.phpmyadmin.net/
  • SQLyog: https://sqlyog.en.softonic.com/

小技巧

  1. 在SQL语句之后加上\G会将结果的表格形式转换成行文本形式
  2. 查看Mysql数据库占用空间:
1
2
3
4
SELECT table_schema "Database Name"
, SUM(data_length + index_length) / (1024 * 1024) "Database Size in MB"
FROM information_schema.TABLES
GROUP BY table_schema;

13. MySQL管理
http://binbo-zappy.github.io/2024/11/27/MySQL/13-MySQL管理/
作者
Binbo
发布于
2024年11月27日
许可协议