DBMS数据库管理系统

  • RDBMS : 关系型数据库 Oracle,MySQL,PG,MSSQL
  • NoSQL : 非关系型数据库 MongoDB,Redis,ES
  • NEWSQL : 可扩展/高性能数据库 TiDB,Spanner,AliSQL(RDS+DRDS),OB,PolarDB

MySQL 企业版本GA选择

  • 5.6 : 5.6.34,5.6.36,5.6.38(2017913),5.6.40
  • 5.7 : 5.7.18,5.7.20(2017913),5.7.24,5.7.26
  • 8.0 : 8014,8015,8016

MySQL 5.7.28 二进制版本安装

资源不建议去MySQL官网寻找,下载太慢,可以从国内各大镜像网站寻找,推荐搜狐开源镜像

使用的是mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

将软件保存至/server/tools

mkdir -p /server/tools
cd /server/tools

解压软件

tar -xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
mkdir /application
mv mysql-5.7.28-linux-glibc2.12-x86_64  /application/mysql

用户的创建处理原始环境

之前搭建综合架构时,安装过Mariadb,现在卸载掉,如果之前安装过其他版本的MySQL也需要清除

由于使用的二进制版本,如果不存在mysql用户,创建一个mysql的用户

rpm -qa mariadb
yum remove mariadb-5.5.64-1.el7.x86_64 -y
useradd -s /sbin/nologin mysql

设置环境变量

vim /etc/profile

#添加环境变量 可以直接使用mysql
export PATH=/application/mysql/bin:$PATH

#重新加载该文件
source /etc/profile

#可以使用命令查看mysql的版本
mysql -V

创建数据路径并授权

添加一块新的磁盘,数据库的数据存放在该磁盘

#格式化磁盘
mkfs.xfs /dev/sdb
#创建挂载目录
mkdir /data
#查看磁盘uuid
blkid
#编辑文件 添加磁盘开机加载
vim /etc/fstab

UUID=1c167e22-11ee-4e13-8c64-251dfce36ecc /data                   xfs     defaults        0 0

#挂载磁盘
mount -a
#查看磁盘
df -h

文件授权

chown -R mysql.mysql /application/mysql
chown -R mysql.mysql /data

初始化数据(创建系统数据)

  • 5.6版本初始化命令 : /application/mysql/scripts/mysql_install_db
#5.7版本初始化命令
#--user mysql的用户
#--basedir mysql安装位置
#--datadir mysql数据存放位置

mkdir -p /data/mysql/data
chown -R mysql.mysql /data
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

初始化完成后注意最后一行,会给root用户设置一个临时密码,密码复杂度,4种,12位,过期时间180天

[root@db01 mysql]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
2020-03-05T06:49:42.566714Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-03-05T06:49:43.438688Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-03-05T06:49:43.554928Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-03-05T06:49:43.634802Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 7eb4b9b7-5ead-11ea-b305-000c293555ca.
2020-03-05T06:49:43.635844Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-03-05T06:49:43.637399Z 1 [Note] A temporary password is generated for root@localhost: TE/Th.#SG8)w
  • 如果出现报错mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory需要安装对应的依赖
yum install -y libaio-devel
yum -y install numactl
  • 使用一下参数初始化,就不会有临时密码
mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
  • 修改root用户密码
alter user root@localhost identified by '123456';

配置文件的准备

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

启动数据库

  • sys-v
cp /application/mysql/support-files/mysql.server  /etc/init.d/mysqld
service mysqld start
  • 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

如何分析处理MySQL数据库无法启动

  • 查看日志,/data/mysql/data/主机名.err
  • /etc/my.cnf 路径不对等
  • /tmp/mysql.sock文件修改或删除
  • 数据目录权限不是mysql
  • 参数改错了

管理员密码的设定(root@localhost)

#输入当前密码后输入两次新密码
mysqladmin -uroot -p password
#输入当前密码后直接修改成功
mysqladmin -uroot -p password 123456

root用户密码忘记怎么办

  • 关闭数据库
/etc/init.d/mysqld stop
  • 启动数据库到维护模式
#--skip-grant-tables  跳过授权表 可以不使用密码登录
#--skip-networking    跳过远程登录 防止在无密码保护的情况下远程登录

mysqld_safe --skip-grant-tables --skip-networking &
  • 登录并修改密码
#启动维护模式后,可以直接使用mysql命令直接登录
#登录以后直接修改密码会报错,由于跳过了授权表,需要先刷新授权表
#相关报错信息
#ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
flush privileges;
#刷新以后可以使用命令修改,然后重启数据库
alter user root@'localhost' identified by '1';