MySQL体系结构及安装MySQL
- MySQL体系结构
- CentOS7安装MySQL四种方法
- 1、离线安装
- 2、在线安装
- 3、通用二级制方式
- 4、容器方式安装
- 设置及修改密码
- 忘记密码恢复
MySQL体系结构
MySQL是一种常用的关系型数据库管理系统(RDBMS),其体系结构包括以下:
1、连接池:管理缓冲用户连接,线程处理等需要缓存的需求
2、查询缓存:用于缓存查询的结果,当相同的查询再次执行时,可以直接从缓存中获取结果,提高查询性能
3、解析器:对SQL语句进行解析,验证语法正确性
4、优化器:对查询进行优化,会考虑索引、表大小等因素,提高查询性能
5、SQL接口:接受用户的SQL命令,并返回用户需要的结果
6、存储引擎:负责实际的数据存储和检索
7、Management Serveices & Utilities:提供管理和控制的工具
8、Connectors:不同语言中与SQL的交互
CentOS7安装MySQL四种方法
1、离线安装
去MySQL官网下载适合的包,然后导入虚拟机
执行以下命令进行解压
[root@localhost mysql]# tar xf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
解压之后
在安装这四个包之前先卸载mariadb-libs
[root@localhost mysql]# rpm -e mariadb-libs postfix
然后再安装
[root@localhost mysql]# yum localinstall -y mysql-community-server-5.7.18-1.el7.x86_64.rpm mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm
启动mysql服务
[root@localhost mysql]# systemctl start mysqld
过滤密码
[root@localhost mysql]# awk '/temporary password/{print $NF}' /var/log/mysqld.log
登录
[root@localhost mysql]# mysql -uroot -p'ca3x8RA*QFlq'
修改密码
mysql> alter user root@localhost identified by '符合规则的密码即可';
2、在线安装
1、可以配置一个安装yum源
[root@localhost ~]# yum install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
可以手动配置yum源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# cat mysql.repo
[mysql]
name=mysql5.7
baseurl=http://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
2、接下来安装
[root@localhost ~]# yum install mysql-community-server
剩下的操作就是启动服务,改密,跟上面操作一样
3、通用二级制方式
1、下载包—glibc
官方文档
[root@localhost ~]# groupadd -r mysql
[root@localhost ~]# useradd mysql -r -g mysql -c "MySQL Server" -s /bin/false
[root@localhost ~]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar -C /usr/local
#tar包需要解压两次,不清楚的到/usr/local下查看是否解压完成
[root@localhost ~]# tar xf /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
#创建软链接,为了以后方便升级
[root@localhost ~]# ln -sv /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64 /usr/local/mysql
‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.7.14-linux-glibc2.5-x86_64’
[root@localhost ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
#执行上面这条命令后,临时密码会在后面显示
#提供配置文件和服务脚本减少启动流程
[root@localhost ~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? yes
提供配置文件
[root@localhost ~]# vim /etc/my.cnf
服务脚本
[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#添加服务,提供脚本
[root@localhost ~]# chkconfig --add mysqld
[root@localhost ~]# chkconfig mysqld on
启动MySQL
[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
配置环境变量
[root@localhost ~]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
执行
[root@localhost ~]# cd /etc/profile.d/
[root@localhost profile.d]# . mysql.sh
其余操作一样
4、容器方式安装
1、安装一些必要的系统工具
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源信息并修改
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
3、更新并安装Docker-CE
[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum -y install docker-ce
4、重启并开启docker服务
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# systemctl enable docker
容器方式启动MySQL
[root@localhost ~]# docker run --name mysql -d -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
#进入容器
[root@localhost ~]# docker exec -it mysql bash
bash-4.2# mysql -uroot -p123456
剩余操作一样
设置及修改密码
方法1:
[root@localhost ~]# mysqladmin -uroot -p password
方法2:
mysql> alter user root@localhost identified by '密码';
方法3:
mysql> SET PASSWORD FOR 'root'@'localhost' = '密码';
忘记密码恢复
启动时跳过权限表,
/etc/my.cnf配置文件添加[mysqld]
skip-grant-tables
方法1:
mysql> update mysql.user set authentication_string=password('密码')
-> where user='root' and host='localhost';
mysql> flush privileges;
方法2:
mysql> flush privileges;
mysql> ALTER USER root@localhost identified by '密码';