MySQL5.7安装
1. 环境准备
-
CentOS 7.5
-
MySQL 5.7.30
-
JDK-8u202
2. CentOS 7.5 环境
IP地址 | 主机名 | |
---|---|---|
master | 192.168.8.30 | mysql30 |
slave1 | 192.168.8.31 | mysql31 |
slave2 | 192.168.8.32 | mysql32 |
设置主机名
# 设置主机名
hostnamectl set-hostname mysql30
# 查看主机名
hostname
设置IP地址(虚拟机网络设置为NAT)
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.8.30
GATEWAY=192.168.8.2
NETMASK=255.255.255.0
DNS1=8.8.8.8
重启网络服务
systemctl restart network
# 测试网络
ping www.baidu.com
关机防火墙(实验需求临时关闭,生产环境还是要打开)
systemctl stop firewalld # 停止防火墙服务
systemctl disable firewalld # 开机不启动防火墙服务
设置时间同步
yum -y install npt ntpdate
ntpdate cn.pool.ntp.org
hwclock --systoch
3. 安装JDK
检查系统是否存在 jdk
[root@mysql30 ~]# rpm -qa|grep java
[root@mysql30 ~]#
[root@mysql30 ~]# java -version
-bash: java: command not found
[root@mysql30 ~]#
开始安装 JDK
# 1.解压JDK
[root@mysql30 ~]# tar -xzvf jdk-8u202-linux-x64.tar.gz
# 2.进入/usr/local,创建java目录
[root@mysql30 ~]# cd /usr/local/
[root@mysql30 local]# mkdir java
[root@mysql30 local]# ls
bin etc games include java lib lib64 libexec sbin share src
# 3.回到根目录
[root@mysql30 local]# cd ~
# 4.把解压后的jdk移动到/usr/local/java/目录
[root@mysql30 ~]# mv jdk1.8.0_202/ /usr/local/java/
[root@mysql30 ~]#
[root@mysql30 ~]# cd /usr/local/java/
[root@mysql30 java]# ll
total 0
drwxr-xr-x 2 10 143 6 Apr 5 18:01 jdk1.8.0_202
[root@mysql30 java]# cd jdk1.8.0_202/
[root@mysql30 jdk1.8.0_202]# ll
total 25988
drwxr-xr-x 2 10 143 4096 Dec 16 2018 bin
-r--r--r-- 1 10 143 3244 Dec 16 2018 COPYRIGHT
drwxr-xr-x 3 10 143 132 Dec 16 2018 include
-rw-r--r-- 1 10 143 5211154 Dec 12 2018 javafx-src.zip
drwxr-xr-x 5 10 143 185 Dec 16 2018 jre
drwxr-xr-x 5 10 143 245 Dec 16 2018 lib
-r--r--r-- 1 10 143 40 Dec 16 2018 LICENSE
drwxr-xr-x 4 10 143 47 Dec 16 2018 man
-r--r--r-- 1 10 143 159 Dec 16 2018 README.html
-rw-r--r-- 1 10 143 424 Dec 16 2018 release
-rw-r--r-- 1 10 143 21105955 Dec 16 2018 src.zip
-rw-r--r-- 1 10 143 112724 Dec 12 2018 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r-- 1 10 143 153824 Dec 16 2018 THIRDPARTYLICENSEREADME.txt
[root@mysql30 jdk1.8.0_202]#
# 5.查看jdk路径
[root@mysql30 jdk1.8.0_202]# pwd
/usr/local/java/jdk1.8.0_202
[root@mysql30 jdk1.8.0_202]#
配置环境变量
# 1.进入配置文件
[root@mysql30 ~]# vim /etc/profile
# 2.使用快捷键跳到最后一行(Shift+g),在最后一行添加下面的语句
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
# 3.保存退出后,执行profile立刻生效
[root@mysql30 ~]# source /etc/profile
# 4.测试是否安装成功
[root@mysql30 ~]# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
[root@mysql30 ~]#
4. 安装MySQL
4.1. 下载MySQL5.7.30版本
版本下载地址:MySQL :: Download MySQL Community Server (Archived Versions)
4.2. 检查环境
检查系统中是否有MySQL
[root@mysql30 ~]# rpm -qa|grep mysql
[root@mysql30 ~]#
检查系统中是否有Mariadb
[root@mysql30 mysql]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@mysql30 mysql]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@mysql30 mysql]#
[root@mysql30 mysql]# rpm -qa|grep mariadb
[root@mysql30 mysql]#
4.3. 开始安装MySQL
# 1.解压
[root@mysql30 ~]# tar -xzvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
# 2.移动到/usr/local/目录
[root@mysql30 ~]# mv mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/
[root@mysql30 ~]# cd /usr/local/
[root@mysql30 local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x 3 root root 26 Apr 5 18:12 java
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x 9 root root 129 Apr 5 18:49 mysql-5.7.30-linux-glibc2.12-x86_64
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 May 3 2021 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src
[root@mysql30 local]#
# 3.修改目录名字
[root@mysql30 local]# mv mysql-5.7.30-linux-glibc2.12-x86_64/ mysql
[root@mysql30 local]#
[root@mysql30 local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x 3 root root 26 Apr 5 18:12 java
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x 9 root root 129 Apr 5 18:49 mysql
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 May 3 2021 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src
[root@mysql30 local]#
4.4. 创建用户组和用户
[root@mysql30 mysql]# groupadd mysql
[root@mysql30 mysql]# useradd -r -g mysql mysql
4.5. 创建数据目录
[root@mysql30 mysql]# mkdir -p data
[root@mysql30 mysql]# mkdir -p logs/{binlog,relay}
[root@mysql30 mysql]#
[root@mysql30 mysql]# ll
total 288
drwxr-xr-x 2 root root 4096 Apr 5 18:49 bin
drwxr-xr-x 2 root root 6 Apr 5 19:32 data
drwxr-xr-x 2 root root 55 Apr 5 18:49 docs
drwxr-xr-x 3 root root 4096 Apr 5 18:49 include
drwxr-xr-x 5 root root 230 Apr 5 18:49 lib
-rw-r--r-- 1 7161 31415 275235 Mar 24 2020 LICENSE
drwxr-xr-x 4 root root 33 Apr 5 19:33 logs
drwxr-xr-x 4 root root 30 Apr 5 18:49 man
-rw-r--r-- 1 7161 31415 587 Mar 24 2020 README
drwxr-xr-x 28 root root 4096 Apr 5 18:49 share
drwxr-xr-x 2 root root 90 Apr 5 18:49 support-files
[root@mysql30 mysql]#
# 回到上一层目录 /usr/local/
[root@mysql30 mysql]# cd ..
[root@mysql30 local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x 3 root root 26 Apr 5 18:12 java
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x 11 root root 153 Apr 5 19:33 mysql
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 May 3 2021 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src
[root@mysql30 local]#
# 赋予权限
[root@mysql30 local]# chown mysql:mysql -R mysql/
[root@mysql30 local]#
[root@mysql30 local]# cd mysql/
[root@mysql30 mysql]# ll
total 288
drwxr-xr-x 2 mysql mysql 4096 Apr 5 18:49 bin
drwxr-xr-x 2 mysql mysql 6 Apr 5 19:32 data
drwxr-xr-x 2 mysql mysql 55 Apr 5 18:49 docs
drwxr-xr-x 3 mysql mysql 4096 Apr 5 18:49 include
drwxr-xr-x 5 mysql mysql 230 Apr 5 18:49 lib
-rw-r--r-- 1 mysql mysql 275235 Mar 24 2020 LICENSE
drwxr-xr-x 4 mysql mysql 33 Apr 5 19:33 logs
drwxr-xr-x 4 mysql mysql 30 Apr 5 18:49 man
-rw-r--r-- 1 mysql mysql 587 Mar 24 2020 README
drwxr-xr-x 28 mysql mysql 4096 Apr 5 18:49 share
drwxr-xr-x 2 mysql mysql 90 Apr 5 18:49 support-files
[root@mysql30 mysql]#
[root@mysql30 mysql]# cd bin/
[root@mysql30 bin]# pwd
/usr/local/mysql/bin
[root@mysql30 bin]#
4.6. 配置环境变量
[root@mysql30 mysql]# echo "export PATH=$PATH:/usr/local/mysql/bin:" >> /etc/profile && source /etc/profile
配置my.cnf
[root@mysql30 mysql]# vim /etc/my.cnf
# 对本地的mysql客户端的配置
[client]
default-character-set=utf8mb4
# 对其他远程连接的mysql客户端的配置
[mysql]
default-character-set=utf8mb4
# 本地mysql服务的配置
[mysqld]
user=mysql
port=3306
character-set-client-handshake = FALSE # 使用服务端字符集
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
default-storage-engine=innodb
innodb_buffer_pool_size=200M
max_allowed_packet=16M
explicit_defaults_for_timestamp=1
general_log=0
general_log_file=/usr/local/mysql/logs/general-db01.err
slow_query_log=ON
# 慢日志存储路径,5.6及以上版本
slow_query_log_file=/usr/local/mysql/logs/slow_query-db01.err
# 设置慢查询时间,默认10s
long_query_time=10
# 日志存储方式,默认FILE,TABLE表示写入到mysql.slow_log表
log-output=FILE
log-error=/usr/local/mysql/logs/err-db01.err
4.7. 初始化数据库
# 进入mysql的bin目录
[root@mysql30 mysql]# cd /usr/local/mysql/bin/
# 初始化
[root@mysql30 ~]# /usr/local/mysql/bin/mysqld_safe --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2022-04-05T14:40:33.255373Z mysqld_safe Logging to '/usr/local/mysql/logs/err-db01.err'.
2022-04-05T14:40:33.341510Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
2022-04-05T14:40:37.561176Z mysqld_safe mysqld from pid file /usr/local/mysql/data/mysql30.pid ended
[root@mysql30 ~]#
# 查看root用户密码
[root@mysql30 ~]# cat /usr/local/mysql/logs/err-db01.err
2022-04-05T14:40:35.118335Z 0 [Warning] CA certificate ca.pem is self signed.
2022-04-05T14:40:35.330507Z 1 [Note] A temporary password is generated for root@localhost: vkhcj>_gj69M
# 启动MySQL
[root@mysql30 ~]# mysqld_safe
# mysqld --defaults-file=/etc/my.cnf 等价于 mysqld_safe
[root@mysql30 data]# mysql -uroot -p
Enter password: vkhcj>_gj69M
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30-log
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> shutdown;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
# 修改root用户密码
mysql> alter user user() identified by 'root';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 可以正常关闭MySQL
mysql> shutdown;
4.8. 注入MySQL服务
# 创建mysqld.service
[root@mysql30 ~]# vim /usr/lib/systemd/system/mysqld.service
# 复制下面的内容,注意mysql目录
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target
[Install]
WantedBy=mulit-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/mysql/apps/mysql/bin/mysqld --defaults-file=/mysql/my.cnf
LimitNOFILE=65536
LimitNPROC=65536
4.9. 服务相关信息
# 启动服务
[root@mysql30 ~]# systemctl start mysqld
# 设置开机自启
[root@mysql30 ~]# systemctl enable mysqld
# 关闭服务
[root@mysql30 ~]# systemctl stop mysqld
# 查看mysql服务状态
[root@mysql30 ~]# systemctl status mysqld
4.10. utf8mb4字符集
utf8mb4是什么?
utf8mb4 最明显的好处是解决了苹果挖的坑-推广了emoji 表情。utf8mb4 解决了MySQL数据库存储emoji表情的问题。
utf8mb4 是 utf8 的超集,理论上由 utf8 升级到 utf8mb4 字符编码没有任何兼容问题。
utf8mb4 是 MySQL5.5.3 版本之后支持的字符集,前提条件是 MySQL 版本必须 >= 5.5.3 。
查看字符编码
mysql> show variables like '%char%';
查找配置文件地址
[root@mysql30 ~]# mysqld --verbose --help|grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
打开/etc/my.cnf
配置文件,修改字符编码
vim /etc/my.cnf
修改或添加以下内容
# 对本地的mysql客户端的配置
[client]
default-character-set=utf8mb4
# 对其他远程连接的mysql客户端的配置
[mysql]
default-character-set=utf8mb4
# 本地mysql服务的配置
[mysqld]
character-set-client-handshake = FALSE # 使用服务端字符集
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
查看mysql全局变量
show variables like '%char%';
重启MySQL服务
systemctl restart mysqld
systemctl status mysqld
验证字符集
[root@mysql30 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30-log MySQL Community Server (GPL)
# 查看字符集
mysql> show variables like '%char%';
注:character_set_system 一直都会是 utf8,不能被更改!
查看数据库的编码格式
show create database <数据库>;
修改数据库的编码格式
ALTER DATABASE <数据库> CHARACTER SET utf8mb4 COLLATE = utf8mb4_unicode_ci;;
查看表的编码格式
show create table <表名>;
修改表编码格式
ALTER TABLE <表名> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看字段的编码格式
show full columns from <表名>;
修改字段编码格式
alter table <表名> change <字段名> <字段名> <类型> character set utf8mb4 COLLATE utf8mb4_unicode_ci;
检查字段的最大长度和索引列
字段长度
由于从utf8 升级到了 utf8mb4,一个字符所占用的空间也由3个字节增长到4个字节,但是我们当初创建表时,设置的字段类型以及最大的长度没有改变。
例如,在 utf8 下设置某一字段的类型为 TINYTEXT, 这中字段类型最大可以容纳255字节,三个字节一个字符的情况下可以容纳 85 个字符,四个字节一个字符的情况下只能容纳 63 个字符,如果原表中的这个字段的值有一个或多个超过了63个字符,那么转换成 utf8mb4 字符编码时将转换失败,必须先将 TINYTEXT 更改为 TEXT 等更高容量的类型之后才能继续转换字符编码。
索引
在 InnoDB 引 擎中,最大的索引长度为767字节,三个字节一个字符的情况下,索引列的字符长度最大可以达到 255,四个字节一个字符的情况下,索引的字符长度最大只能到 191。如果已经存在的表中的索引列的类型为 VARCHAR(255) 那么转换 utf8mb4 时同样会转换失败。需要先将 VARCHAR(255) 更改为 VARCHAR(191) 才能继续转换字符编码。
5. MySQL5.7 目录
bin目录
用于放置一些可执行文件,如mysql、mysqld、mysqlshow等。
data目录
用于放置一些日志文件以及数据库。
db1就是创建的数据库名。
[root@mysql30 db1]# ll
total 112
-rw-r----- 1 mysql mysql 67 Apr 9 17:51 db.opt
-rw-r----- 1 mysql mysql 8556 Apr 9 17:51 t1.frm
-rw-r----- 1 mysql mysql 98304 Apr 9 17:52 t1.ibd
# 存储引擎是InnoDB, 在data目录下会看到2类文件:.frm、.ibd
# *.frm:是表结构的文件。
# *.ibd:是表数据和索引的文件。该表的索引(B+树)的每个非叶子节点存储索引,叶子节点存储索引和索引对应的数据。
# db.opt:MySQL数据库程序的存放数据目录里的db.opt文件是MySQL程序生成的,是用来记录该库的默认字符集编码和字符集排序规则用的。
查看数据库引擎
mysql> show engines;
-
Engine:引擎名称
-
Support列
-
YES表示当前版本支持这个存储引擎;
-
DEFAULT表示该引擎是默认的引擎;
-
NO表示不支持该存储引擎。
-
InnoDB存储引擎 从MySQL5.5版本之后,MySQL的默认内置存储引擎已经是InnoDB了。
主要特点:
支持事务。默认的事务隔离级别为可重复读(RR),通过MVCC(并发版本控制)来实现的。
使用的锁粒度为行级锁,可以支持更高的并发;
支持外键;
在InnoDB中存在着缓冲管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度;
对于InnoDB类型的表,其数据的物理组织形式是聚簇表(聚簇索引)。所有的数据按照主键来组织。数据和索引放在一块,都位于B+数的叶子节点上;
MyISAM存储引擎 在5.5版本之前,MyISAM是MySQL的默认存储引擎,该存储引擎并发性差,不支持事务,所以使用场景比较少,主要特点为:
不支持事务;
不支持外键,如果强行增加外键,不会提示错误,只是外键不其作用;
对数据的查询缓存只会缓存索引,不会像InnoDB一样缓存数据,而且是利用操作系统本身的缓存;
默认的锁粒度为表级锁,所以并发度很差,加锁快,锁冲突较少,所以不太容易发生死锁;
支持全文索引(MySQL5.6之后,InnoDB存储引擎也对全文索引做了支持),但是MySQL的全文索引基本不会使用,对于全文索引,现在有其他成熟的解决方案,比如:ElasticSearch,Solr,Sphinx等。
数据库所在主机如果宕机,MyISAM的数据文件容易损坏,而且难恢复;
include目录
用于放置一些头文件,如:mysql.h、mysql_ername.h等。
lib目录
用于放置一系列库文件。
share目录
用于存放字符集、语言等信息。
6. show 命令
查看数据库列表
show databases;
查看数据库内的可用表的列表
use <数据库名>;
show tables from <数据库名>;
查看表的字段
show columns from <表名> from <数据库名>;
show columns from <数据库名>.<表名>;
查看创建数据库的语句
show create database <数据库名>;
查看创建表的语句
# 查看表的详细创建信息
shwo create table <表名>\G
显示授予用户的安全权限
show grants for <用户名>;
select * from mysql.user;
select host, user, password, select_priv, insert_priv,drop_priv from mysql.user;
host :表示连接类型
% 表示所有远程通过 TCP 方式的连接;
IP 地址 如 (192.168.1.2,127.0.0.1) 通过制定 ip 地址进行的 TCP 方式的连接;
机器名 通过制定 i 网络中的机器名进行的 TCP 方式的连接;
::1 IPv6 的本地 ip 地址 等同于 IPv4 的 127.0.0.1;
localhost 本地方式通过命令行方式的连接 , 比如 mysql -u xxx -p 123xxx 方式的连接。
user:表示用户名 同一用户通过不同方式链接的权限是不一样的。
password:密码
所有密码串通过 password(明文字符串) 生成的密文字符串。 加密算法为 MYSQLSHA1 , 不可逆 。
mysql 5.7 的密码保存到 authentication_string 字段中不再使用 password 字段。
select_priv , insert_priv 等,为该用户所拥有的权限。
显示服务器错误消息
show errors;
显示服务器警告消息
show warnings;
查看字符集命令
shwo variables like '%character_%';
shwo variables like '%collation_%';
查看表的索引状态
show index from <表名>\G
# show index 返回字段解析:
# -----------------------------------------
# Table:表的名称。
# Non_unique:如果索引不能包括重复词,则为0。如果可以,则为1。
# Key_name:索引的名称。
# Seq_in_index:索引中的列序列号,从1开始。
# Column_name:列名称。
# Collation:列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类).
# Cardinality:索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新.
# Sub_part:如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
# Packed:指示关键字如何被压缩。如果没有被压缩,则为NULL。
# Null:如果列含有NULL,则含有YES。如果没有,则该列含有NO。
# Index_type:用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
# Comment:多种评注。
显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
show table status;
显示服务器所支持的不同权限
show privileges;
显示安装以后可用的存储引擎和默认引擎。
show engies;
显示innoDB存储引擎的状态
show innodb status;
显示BDB存储引擎的日志
show logs;
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过 程名称,创建时间等
show procedure status;
显示某一个存储过程的详细信息
show create procedure sp_name;
显示MySQL上的Binlog文件信息
show binary logs;
show master logs;
显示指定函数的创建语句
show create function fun_name;
显示指定用户的创建语句
show create user <用户名>;
显示指定视图的创建语句
show create view view_name;
显示指定存储引擎运行时的快照信息
show engine <引擎名称> {status|mutex};
显示表缓存中打开的非临时表信息
SHOW OPEN TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
显示当前会话的SQL语句的资源使用情况
SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]]
显示当前会话多个SQL语句的执行耗时
show profiles;
显示当前主库上注册的从库信息
show slave hosts;
显示从库的复制信息
show slave status [for channel channel]
查看服务器状态信息
show status;
# 查看MySQL本次启动后的运行时间(单位:秒)
show status like 'uptime';
# 查看select语句的执行数
show [global] status like 'com_select';
# 查看insert语句的执行数
show [global] status like 'com_insert';
# 查看update语句的执行数
show [global] status like 'com_update';
# 查看delete语句的执行数
show [global] status like 'com_delete';
# 查看试图连接到MySQL(不管是否连接成功)的连接数
show status like 'connections';
# 查看线程缓存内的线程的数量。
show status like 'threads_cached';
# 查看当前打开的连接的数量。
show status like 'threads_connected';
# 查看当前打开的连接的数量。
show status like 'threads_connected';
# 查看创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。
show status like 'threads_created';
# 查看激活的(非睡眠状态)线程数。
show status like 'threads_running';
# 查看立即获得的表的锁的次数。
show status like 'table_locks_immediate';
# 查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。
show status like 'table_locks_waited';
# 查看创建时间超过slow_launch_time秒的线程数。
show status like 'slow_launch_threads';
# 查看查询时间超过long_query_time秒的查询的个数。
show status like 'slow_queries';
显示系统变量
mysqld 服务维护两种变量。全局变量影响服务器的全局操作。会话变量影响具体客户端连接相关操作。
通过连接服务器并执行SET GLOBAL var_name 语句可以更改动态全局变量。要想更改全局变量,必须具有 SUPER 权限,重启 mysql 服务后失效 。
通过 SET SESSION var_name 语句来更改动态会话变量.但客户可以只更改自己的会话变量,而不更改其它客户的会话变量,退出终端后更改失效 。
SHOW VARIABLES通常结合like使用
show variables;
# 1. 查看全局字符集
show global variables like 'character%';
SHOW VARIABLES LIKE 'collation_%';
# 2. 查看当前错误日志配置
show global variables like '%log_err%';
# 3. 查看二进制日志是否开启.
show variables like 'log_bin';
# 4. 查看mysql的连接数.
show variables like '%connections%';
# 5. 查看二进制日志的存储格式
show variables like 'binlog_format';
# 6. 全局查看wait_timeout值
show global variables like ‘wait_timeout’; # 这是mysql的默认值,可修改
# 修改全局wait_timeout值
set global wait_timeout=3600;
# 7. 查询 Mysql最大连接数
show variables like '%max_connections%';
# 查询 Mysql当前连接数
show full processlist;