发布于 

MySQL笔记

简介

一直使用着 MySQL,可能是因为现代化的编程框架太牛,差点让我忘记了原始的 SQL 怎么写了,再加上 DBA 的加持让我在 MySQL 上的‘造诣’越发卑微。发现很多自己遇到的问题是曾经已经解决过却被自己忽略的问题。

无论是因为 MySQL 版本问题,还是个人专业度问题,我还是觉得很有必要把这些问题记录下来,为后续解决问题提高效率。

写过的关于 MySQL 的文章:

这份笔记会持续更新下去。

授权问题

明明给数据库用户进行了授权,但是显示无法本地访问?

当不加 @ 选项时,效果与加 @'%' 是一样的,'%' 从名义上包括任何主机,% 必须加上引号,不然与 @ 放在一起可能不会被辨认出。

不过因为 MySQL 版本问题(我在 MySQL 5.5.x 版本就遇到这样的问题)'%' 不包括 localhost,需要单独对 @'localhost' 进行赋值。

1
2
3
4
5
6
# DB_NAME.*:数据库下的所有表
# 'name'@'localhost':指定用户 name 的 localhost
# 'PASSWORD':指定用户 name 的密码
GRANT ALL PRIVILEGES ON DB_NAME.* TO 'name'@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

flush privileges;

MySQL 主从

1、显示主、从运行状态

在 MySQL-Master 上面可以执行

1
show master status\G

在 MySQL-Slave 上面可以执行

1
2
3
4
show master status\G

# 显示的信息更加全面,包括 Master 的情况都有
show slave status\G

Slave 上面,我们主要看下下面两项是否正常:

1
2
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

基本命令

显示当前登录 mysql 的用户

1
select current_user();

查看当前用户拥有的权限

1
show grants;

查看其他 MySQL 用户的权限

1
2
3
4
# 把 name 换成你自己的登录账号名称
show name@localhost;

show name@%;

查看数据库中的某个表的结构

1
desc table_name;

查看数据库中某个表的创建语句

1
show create table table_name;

MySQL 查看文件大小

1、如何查看数据库文件大小

查看数据库文件大小,SQL 命令基本格式如下:

1
2
3
use information_schema;

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='database_name';

例如想知道数据库名称为 “shop”的文件大小,可以这么操作

1
2
3
use information_schema;

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='shop';

2、如何查看数据库中某个表的文件大小

SQL 命令基本格式如下:

1
2
3
use information_schema;

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema=’db_name’ and table_name=’table_name’;

比如,想知道数据库 shop 中的 goods 表的大小

1
2
3
use information_schema;

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema=’shop’ and table_name=’goods’;

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。