01,需要学习的内容
(1).MySQL 5.7 安装部署(二进制) *****
编译自己扩展
(2).MySQL升级步骤扩展 ***
(3).MySQL5.7 体系结构原理 *****
(4).MySQL基础管理 *****
(5).基础SQL语句使用 *****
(6).SQL高级应用 ***
(7).Information schema获取元数据 ***
(8).索引、执行计划管理(基础优化)*****
(9).存储引擎 *****
(10).日志管理 *****
(11).备份与恢复 *****
(12).主从复制及架构演变 *****
(13).传统的高可用及读写分离(MA&Atlas)****
(14).传统分布式架构设计与实现-扩展 (Mycat--->DBLE,DRDS) **
(15).MySQL 5.7 高可用及分布式架构-扩展(MGR,InnoDB,Cluster)***
(16).MySQL优化(安全、性能)****
(17).MySQL监控(zabbix、Open-falcon) ****
(18).RDS(阿里云课程)*****
02,MySQL 5.7.26 二进制版本安装
1,下载并上传软件至/server/tools
mkdir -p /server/tools
cd /server/tools/
yum -y install lrzsz
2,解压软件
tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
mkdir /application
mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql
3,用户创建处理原始环境
yum remove mariadb-libs-5.5.56-2.el7.x86_6 -y
rpm -qa |grep mariadb
useradd -s /sbin/nologin mysql
4,设置环境变量
vim /etc/profile
export PATH=/application/mysql/bin:$PATH
source /etc/profile
mysql -V
03,创建数据路径并授权
①添加一块新磁盘模拟数据盘
②格式化并挂载磁盘
mkfs.xfs /dev/sdb
mkdir /data
blkid
vim /etc/fstab
UUID=6d7ceb78-5672-48eb-8e3e-7144f99678b9 /data xfs defaults 0 0
mount -a
df -h
③授权
chown -R mysql.mysql /application/*
chown -R mysql.mysql /data
04,初始化数据(创建系统数据)
5.7版本初始化命令
mkdir /data/mysql/data -p
chown -R mysql.mysql /data
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
说明:
--initialize 参数:
1.对于密码复杂度进行制定: 12位,4种
2.密码过期时间:180
3.给root@localhost用户设置临时密码
报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:
yum install -y libaio-devel
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
新特性重要说明:
5.7开始,MySQL加入了全新的 密码的安全机制:
1.初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)
2.密码复杂度:长度:超过12位? 复杂度:字符混乱组合
3.密码过期时间180天
2021-01-24T09:18:41.538537Z 1 [Note] A temporary password is generated for root@localhost: #j#g;ZB,s94)
使用如下参数可忽略此特性
--initialize-insecure 参数:
无限制,无临时密码
[root@oldboyedu ~]# \rm -rf /data/mysql/data/*
mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
注释:5.6初始化的区别
/application/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data --basedir=/application/mysql
05,配置文件准备
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
06,启动数据库
①sys-v方式
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld restart
service mysqld stop #停止服务
/etc/init.d/mysql restart #centos 6 中使用绝对路径的启动方法
/etc/init.d/mysql stop #停止服务
判断一个服务是否启动(以mysql为例)
netstat -lnp |grep 3306
ps -ef |grep 3306
ps -ef |grep mysqld
② systemd方式
注意: sysv方式启动过的话,需要先提前关闭,才能以下方式登录
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
配置文件创建好后,就可以用systemd管理了
systemctl start/stop/restart/status mysqld
07,如何分析处理MySQL数据库无法启动
①without updating PID 类似错误
查看日志:
在哪?
/data/mysql/data/主机名.err
[ERROR]上下文
②可能情况:
/etc/my.cnf 路径不对等
/tmp/mysql.sock 文件修改过 或删除过
数据目录权限不是mysql
参数改错了
8.管理密码的设定(root@localhost)
mysqladmin -uroot -p password 123
9.管理员用户密码忘了?(面试题)
--skip--grant-tables #跳过授权表
--skip-networking #跳过远程登录
①关闭数据库
/etc/init.d/mysqld stop
②启动数据库的维护模式
ps:维护模式只能在数据库服务器本地连接
mysqld_safe --skip-grant-tables --skip-networking &
③登录并修改密码
mysql> alter user root@'localhost' identified by '1';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> alter user root@'localhost' identified by '1';
Query OK, 0 rows affected (0.00 sec)