官网:https://dev.mysql.com/doc/refman/8.0/en/
课程安排
| 第一天 | 第二天 | 第三天 | 第四天 |
|---|---|---|---|
| 初始MySQL | 用户管理 | 部署环境规范 | 监控和性能瓶颈排查 |
| MySQL安装 | Binlog解析 | 部署生产MySQL(docker mysql) | 慢日志设置及解析 |
| 存储引擎及目录结构 | 备份恢复 | 压力测试 | 执行计划详解 |
| 远程连接 | 存储引擎架构 | 主机优化&MySQL优化 | 高可用架构简介 |
| 数据类型 | OOM的发生 | MySQL索引 | |
| 事务和锁 |
MySQL安装
- 二进制安装:简单,方便,问题少,强烈建议
- rpm安装:简单,通常版本较低,默认条件多,不建议
- 源码编译:复杂,问题多,不建议
安装
官网二进制安装:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
1、卸载自带mysql/mariadb服务
rpm -qa | grep mysqlrpm -qa | grep mariadbrpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
2、安装服务
groupadd mysqluseradd -r -g mysql -s /bin/false mysqltar xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar -C /usr/local/ln -s mysql-8.0.19-linux-glibc2.12-x86_64/ mysqlmkdir mysql-fileschown -R mysql:mysql mysql-8.0.19-linux-glibc2.12-x86_64/chown -R mysql:mysql /usr/local/mysql/chmod 750 /usr/local/mysql/mysql-files/# 初始化 - 注意密码,后边修改需要用到bin/mysqld --initialize --user=mysqlbin/mysql_ssl_rsa_setupbin/mysqld_safe --user=mysql &
以下信息表示启动成功,查看端口

3、修改密码
mysql -uroot -palter user 'root'@'localhost' identified by 'root@123';flush privileges;

4、mysql启动方式
# 自动启动 - centos6cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqld# 修改mysqld中以下两行:basedir=/usr/local/mysqldatadir=/data/mysql/etc/init.d/mysqld start# 手动启动bin/mysqld_safe --user=mysql &# 自定义配置文件的启动方式/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
目录结构
bin # 二进制文件data # 数据目录include # 头文件目录lib #插件目录sharesupport-files
常用命令
# 建库、建表create database test;use test;create table t3 (id bigint primary key,name char(40));# 给表增加字段alter table t3 add colum info text;# 查看表结构desc t3;# 存储过程create procedure insertdata(in num int) begin declare i int;# 索引show index from t3\G;#select# 查看编码show variables like '%char%';# 字符集查询show character set;# undo回滚,撤销表空间查询mysqld --verbose --help | grep undo# 帮助help create table;# 关闭服务 - 安全关闭mysqladmin -p shutdown# 创建库时设置编码create database mydb default character set utf8;# 查看配置文件各段的参数(查看mysqld的参数)mysqld --verbose --help | more# mysql参数mysql --verbose --help | more# mysqldump、mysqld_safe等(不是很重要的)# 查看文件位置(pid文件位置)show variables like "%pid%";+---------------+---------------------------+| Variable_name | Value |+---------------+---------------------------+| pid_file | localhost.localdomain.pid |+---------------+---------------------------+1 row in set (0.01 sec)# 查看用户,创建远程登录用户select user,host from mysql.user;create user root@'%' identified by 'root123.comCOM';create user root@'192.168.%.%' identified by 'root123.comCOM';create user root@'%' identified by 'root@123';# mediumshow variables like '%policy%';# 查看服务连接进程列表show processlist;# 查询sql模式 - 配置文件中配置,sql查询相关
修改密码:
# 一mysql -uroot -pupdate mysql.user set password = PASSWORD('new_password') where user = 'root';flush privileges;# 二mysqladmin -uroot password "new_password" -p;mysqladmin -u root -h host_name password "new_password" -p;
关闭远程连接
use mysql;update user set host = "localhost" where user = "root" and host = "%";flush privileges;这几句SQL的解释如下:1, 切换到mysql数据库(这是MySQL自带的一个数据库,里面存放着一些root的配置信息);2, 修改root用户的host属性,确保其为localhost,这表示只能本地访问(%表示可以远程访问);3, 刷新。
创建库和表中,会在mysql/data下创建对应的目录,里面存放这表文件
mysql配置文件基本参数
[mysqld_safe]user = mysql[client]# 指定套接字的位置socket = /usr/local/mysql/data/mysql.sockport = 3406default-character-set = utf8mb4[mysqld]character_set_server = utf8mb4collation_server = utf8mb4_unicode_ciport = 3306transaction_isolation = READ-COMMITTEDopen_files_limit = 65535max_connections =3000max_user_connections =2000Default-time_zone = '+8:00'query_cache_size = 0query_cache_type = 0lock_wait_timeout = 300max_connect_errors = 1000000sort_buffer_size = 10Msql_mode = STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_ALL_TABLESlong_query_time = 1 #1秒慢日志slow_query_log = ONbinlog_format = ROWbinlog_rows_query_log_events = ONenforce_gtid_consistency = ONgtid_mode = ONlog_slave_updates = ONserver_id = 3299865575innodb_flush_method = O_DIRECTinnodb_buffer_pool_size = 12408Minnodb_log_file_size = 2Ginnodb_log_files_in_group = 2innodb_flush_log_at_trx_commit = 1innodb_lru_scan_depth = 256basedir = /mysql/base5725datadir = /mysqldata/my{port}/datatmpdir = /mysql/tmpsocket = /mysql/my{port}/mysql.sockpid_file = /mysql/my{port}/mysql.pidinnodb_data_home_dir = /mysqldata/my{port}/datalog_error = /mysql/my{port}/log/error.loggeneral_log_file = /mysql/my{port}/log/general.logslow_query_log_file = /mysql/my{port}/log/slow.loglog_bin = /mysqldata/my{port}/log/mysql-binlog_bin_index = /mysqldata/my{port}/log/mysql-bin.indexrelay_log = /mysqldata/my{port}/log/relay-logrelay_log_index = /mysqldata/my{port}/log/relay-log.indexlong_query_time = 1 #1秒慢日志slow_query_log = ONbinlog_format = ROWbinlog_rows_query_log_events = ONenforce_gtid_consistency = ONgtid_mode = ONlog_slave_updates = ONserver_id = 3299865575[mysql][mysqldump]
