MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
1、环境准备
服务器:HECS云服务器
系统版本:centos7
2、安装
2.1 卸载MariaDB
原因:以前的Linux系统中数据库大部分是mysql,不过自从被sun收购之后,就没集成在centos这些开源Linux系统中了,那么如果想用的话就需要自己安装了,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb。
2.1.1 查看版本
rpm -qa|grep mariadb
rpm -qa|grep mysql
2.1.2 卸载并检查是否卸载干净
# rpm -e --nodeps 文件名
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rm -rf /etc/my.cnf
rpm -qa|grep mariadb
rpm -qa|grep mysql
2.2 安装MySQL
2.2.1 下载
下载最新版本:MySQL :: Download MySQL Community Server
2.2.2 安装
第一步:将下载好的tar包上传到服务器,并解压
tar -xvf mysql-8.0.29-1.el7.x86_64.rpm-bundle.tar
解压之后包含以下文件
第二步:rpm安装
rpm -Uvh --force --nodeps *.rpm
2.2.3 mysql配置文件更改(非必须)
注:如需更改mysql存储位置和忽略大小写设置需要在初始化前执行
[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-queries-not-using-indexes = 1
slow_query_log = 1
general_log = 1
wait_timeout=28800
max_connections=5000
max_allowed_packet=1000M
# sqlmode配置
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 忽略大小写
lower_case_table_names=1
2.2.4 常用命令
# 查看状态
systemctl status mysqld
# 启动
systemctl start mysqld
# 停止
systemctl stop mysqld
# 重启
systemctl restart mysqld
2.2.5 服务初始化
关闭权限认证:
setenforce 0
查看服务状态:
systemctl status mysqld
停止服务:
systemctl stop mysqld
安装依赖:
yum install -y libaio
若缺失以上依赖,初始化mysql会出现以下报错:
初始化数据库:
mysqld --initialize --console
目录授权:
chown -R mysql:mysql /var/lib/mysql/
服务启动:
systemctl start mysqld
3、配置
3.1 查看临时密码
cat /var/log/mysqld.log
3.2 用临时密码登录数据库
mysql -u root -p
输入密码直接回车即可,密码不会显示出来
3.3 修改密码
alter USER 'root'@'localhost' IDENTIFIED BY '123456';
3.4 授权远程登录
show databases;
use mysql;
select host, user, authentication_string, plugin from user;
update user set host = '%' where user='root';
select host, user, authentication_string, plugin from user;
flush privileges;
3.5 放行3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
云服务器在安全组中配置放行规则即可。
3.6 异常情况
若使用navicat远程连接出现:2059 - Authenticationplugin‘caching_sha2_password’ cannot be loaded:XXXXX。
解决办法:
mysql -u root -p
use mysql;
alter USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
注:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
解决问题方法有两种:
方法1.升级navicat驱动;
方法2.把mysql用户登录密码加密规则还原成mysql_native_password.。
此处我使用的是方法2。