1、MySQL的概念
1.1、数据
数据:存放到存储服务器
MySQL的无处不见
- 微博、论坛、新闻、商城等等
- 图片(/var/www/html/aa.png)–>也是存放到数据库当中
数据应该如何管理?
- 互联网中常见的数据库
- MySQL:首选-免费
- Oracle:银行使用居多–>有技术支持、服务付费
- 什么地方用到数据库?
- 微信、定位、收发短信
- 工作SQL报表
- 跳槽:sql语句考核
- 数据形成阶段
- 绳子记录
- 然后写到甲骨文上面
- 然后写到竹子上面
- 然后到文件系统阶段
- 磁盘
- 数据库阶段
- MySQL
职场事宜:
- 第一学历:重要–>考学历
- 运维–>开发人员写好、提供给你、你复制粘贴–>调试–>上线
1.2、MySQL入门
MySQL到底需要学什么?
- 历史背景、
- 语法(CRUD、读写锁、事务、数据)、
- MySQL 的框架、多版本并发控制、存储引擎(InnoDB、MyISAM)等等
- 学习 MySQL 的工作原理,
- MySQL 的性能优化,
- MySQL 故障诊断和服务器问题分析等等。
MySQL资料
- 《 MySQL8 Cookbook 》 、
- 《 Effective MySQL: Replication Techniques in Depth 》 、
- 《 High Performance MySQL 》
- 《 MySQL Internals Manual 》
- 《 InnoDB - A journey to the core》
- 《MySQL Crash Course》。
- MYSQL必知必会第三版
- 《MySQL实战》
1.3、数据库的概念
数据是什么?
- data、资料
- 数字
- 文字
- 图形
- 图像音频
- 视频
数据库:db
- Mysql中创建一个aa的数据
数据管理系统:DBMS
2、MySQL 安装
2.1、安装mysql-5.7
安装CentOS7系统安装MySQL5.7
CentOS7系统默认的是mariadb
- 安装的环境说明
- 网络要通–>配上IP
- 防火墙、selinux要关闭
- yum源:
#网络ip如下
[root@Node1 ~]# ifconfig ens32 | grep inet | sed -n 1p | awk '{print $2}'
192.168.75.131#关闭防火墙与selinux
[root@Node1 ~]# systemctl stop firewalld
[root@Node1 ~]# setenforce 0#使用本地yum源
[root@Node1 ~]# cat /etc/yum.repos.d/local.repo
[local-repo]
name=local-repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0#挂载光盘
[root@Node1 ~]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only#清空yum缓存
[root@Node1 ~]# yum clean all#重新生成缓存
[root@Node1 ~]# yum makecache fast
[root@Node1 ~]# yum repolist all#安装wget包
[root@Node1 ~]# yum -y install wget#再添加一个阿里云的包
[root@Node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- 清空系统中可能存在的MySQL软件包
#查找系统中相关mysql的包
[root@Node1 ~]# rpm -qa | grep mysql
[root@Node1 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64#卸载包
[root@Node1 ~]# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y#查看一下还有没有其他的
[root@Node1 ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql#最后删除两个文件
[root@Node1 ~]# rm -rf /etc/selinux/targeted/active/modules/100/mysql
[root@Node1 ~]# rm -rf /usr/lib64/mysql
- 准备mysql的源
#直接下载mysql的源
[root@Node1 ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
[root@Node1 ~]# ls mysql57-community-release-el7-9.noarch.rpm
mysql57-community-release-el7-9.noarch.rpm#安装源
[root@Node1 ~]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
- 直接安装mysql-5.7
[root@Node1 ~]# yum -y install mysql-community-server
- 安装完成之后
- 启动mysql
- 设置开机自启
#启动与设置开机自启
[root@Node1 ~]# systemctl start mysqld
[root@Node1 ~]# systemctl enable mysqld
- 登陆mysql
- mysql初次安装的密码存放在安装日志文件当中
- 需要获取它的密码才能登陆
#获取mysql 安装的密码
[root@Node1 ~]# grep "password" /var/log/mysqld.log
2023-07-29T03:24:30.156985Z 1 [Note] A temporary password is generated for root@localhost: yeqtdGoV(3es#使用密码登陆
[root@Node1 ~]# mysql -uroot -p'yeqtdGoV(3es'
...
mysql>
- 到这里为止mysql的安装成功;
安装过程报错:
- 如果安装的过程中出现以下报错
Public key for mysql-community-libs-5.7.42-1.el7.x86_64.rpm is not installedFailing package is: mysql-community-libs-5.7.42-1.el7.x86_64GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysq
- 解决办法如下:
#可以导入秘钥
[root@Node1 ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022#也可以直接把mysql的源中的gpgcheck=0跳过检测
2.2、MySQL修改密码
登陆mysql后修改密码
#登陆mysql
[root@Node1 ~]# mysql -uroot -p'yeqtdGoV(3es'#修改密码-->这里会报错-->具体看报错解决
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
使用mysqladmin命令进行修改密码
- 修改配置文件–>更改密码规则
#修改配置文件
[root@Node1 ~]# vim /etc/my.cnf
...........#在[mysqld]中添加
validate_password_policy=0
validate_password_length=1#重启
[root@Node1 ~]# systemctl restart mysqld#修改密码:
[root@Node1 ~]# mysqladmin -uroot -p'123456' password '123123'#登陆
[root@Node1 ~]# mysql -uroot -p'123123'
修改密码遇到的问题
- 当密码修改成简单的密码出现如下报错
mysql> alter user 'root'@'localhost' identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- 修改配置文件-然后开放简单密码
#在mysql登陆后,也可以操作开放密码规则
[root@Node1 ~]# mysql -uroot -p'yeqtdGoV(3es'
.......#开始修改密码规则
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=1-> ;
Query OK, 0 rows affected (0.00 sec)#然后直接修改密码即可
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
2.3、yum安装mysql8
思路:
- 下载rpm的包–> mysql8
- 然后rpm -ivh 安装mysql8的源
- 然后直接安装
- 然后查找密码–>登陆
安装如下:
- 下载好mysql的包
- MySQL的官网:https://www.mysql.com/
#挂载好本地yum源
[root@Node1 ~]# mount /dev/cdrom /mnt/cdrom/#直接下载wget的命令
[root@Node1 ~]# yum -y install wget#直接下载mysql8的rpm包
[root@Node1 ~]# wget https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm
[root@Node1 ~]# ls mysql80-community-release-el7-1.noarch.rpm
mysql80-community-release-el7-1.noarch.rpm
- 安装mysql8的源
- 最好是修改一下源–>gpgcheck=0
#安装好源
[root@Node1 ~]# rpm -ivh mysql80-community-release-el7-1.noarch.rpm
[root@Node1 ~]# ls /etc/yum.repos.d/
bak local.repo mysql-community.repo mysql-community-source.repo#修改源
[root@Node1 ~]# sed -i 's#gpgcheck=1#gpgcheck=0#g' /etc/yum.repos.d/mysql-community.repo
- 然后直接安装登陆完成操作
- 安装:yum直接装
- 登陆要看一下密码
#直接yum安装
[root@Node1 ~]# yum -y install mysql-community-server#启动mysql
[root@Node1 ~]# systemctl start mysqld#查找登陆密码
[root@Node1 ~]# grep 'password' /var/log/mysqld.log
2023-07-29T06:39:45.018566Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: p5b(S%1aa3mi#登陆
[root@Node1 ~]# mysql -uroot -p'p5b(S%1aa3mi'mysql>
- 到这里已经安装完成
2.4、rocky安装mysql8
安装rocky系统
- 创建虚拟机–>下一步下一步–>创建一个环境
- 挂载镜像–>然后安装系统
- 系统使用图形化
rocky安装mysql8
思路:
- 更新yum源
- 然后直接安装
#把rocky的源都升级了
[root@rocky-01 ~]# dnf upgrade --refresh -y
[root@rocky-01 ~]# dnf update -y#然后直接安装
[root@rocky-01 ~]# yum -y install mysql-server
- rocky系统安装好了之后不用初始化
- 可以直接启动mysql登陆
- 可以直接登录
#启动服务
[root@rocky-01 ~]# systemctl start mysqld#直接登录
[root@rocky-01 ~]# mysql
......
mysql>
几个简单的mysql的操作
- 创建本地登陆的密码
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
- 允许用户root登陆
- 授权用户
#创建一个用户允许任何IP登陆;
mysql> create user root@'%' identified by '123456';
Query OK, 0 rows affected (0.14 sec)#授权用户
mysql> grant all privileges on *.* to root@'%';
Query OK, 0 rows affected (0.00 sec)#刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)#查看一下mysql.user表格
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.01 sec)
- 创建一个普通的用户,并且授权
#创建liangjiawei用户,允许任何IP访问
mysql> create user liangjiawei@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)#创建数据库
mysql> create database LJW;
Query OK, 1 row affected (0.00 sec)#创建一个表格-->表格中只有一个字段
mysql> create table liangjiawei(name int(20));
Query OK, 0 rows affected, 1 warning (0.01 sec)#授权给liangjiawei用户
mysql> grant select on liangjiawei to liangjiawei@'%';
Query OK, 0 rows affected (0.00 sec)#再次查看一下权限
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| liangjiawei | % |
| root | % |
...............
2.5、二进制安装mysql
- 准备好mysql的二进制的包
- 修改系统的环境变量
- 然后初始化mysql
#准备好二进制的包
[root@Node1 ~]# ls mysql-8.0.28-el7-x86_64.tar.gz
mysql-8.0.28-el7-x86_64.tar.gz#解压
[root@Node1 ~]# tar -xf mysql-8.0.28-el7-x86_64.tar.gz #把它移动到/usr/local/目录下
[root@Node1 ~]# mv mysql-8.0.28-el7-x86_64 /usr/local/mysqld#创建mysql用户
[root@Node1 ~]# useradd mysql#修改文件的属主
[root@Node1 ~]# chown mysql.mysql /usr/local/mysqld/ -R#修改环境变量
[root@Node1 ~]# cat >> /etc/profile << EOF
> export MYSQL_HOME=/usr/local/mysqld
> export PATH=$MYSQL_HOME/bin:$PATH
> EOF#重新读取文件
[root@Node1 ~]# source /etc/profile#初始化mysql
[root@Node1 ~]# /usr/local/mysqld/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysqld --datadir=/usr/local/mysqld/data
- 到这里安装完成