数据库运维
记录DBA学习成长历程

第2章:MySQL介绍和安装

文章目录

1. MySQL产品线

—1.1 分支

Oracle:MySQL官方版:默认存储引擎InooDB---首选
红帽支持的MariaDB:默认存储引擎InnoDB,tokuDB   --其次
Percona Server:默认存储引擎XtraDB  ---备选

2 MySQL的企业版本选择

—2.1 分支

E:企业版(收费):可以下载30天试用
C:社区版(开源)

—2.2 社区版选择

免费服务期限:第1-5年
扩展服务期限:第6-10年
公司主流的是:
5.7:一般建议升级到最新版本5.7.18-5.7.30,最好是双数版
5.6:一般建议选择GA 6-12月区间,5.6.34-max,最好是双数版本
8.0:一般建议使用8.0.18以上版本,8.0版本其实就是5.8,5.7之后是8.0其实是oracle策略的问题.
源码包类型:source code(源码包).tar.gz 可以自己定制一些功能(二次开发数据库)

面试题:公司用什么版本数据库? 具体什么小版本号?
5.6 : 5.6.34,5.6.36,5.6.38
5.7 : 5.7.18,5.7.20,5.7.22,5.7.28,5.7.30
8.0:8.0.18

—2.3 获取数据库软件

https://downloads.mysql.com/archives/community/
二进制:简单方便 
YUM:推荐官方yum,因其他yum源安装,数据相关产品yum安装不安全 
编译安装:二次开发,功能嵌入等

3.安装mysql 5.7.28二进制版本

—3.1 克隆 虚拟机

IP:10.0.0.51/24
hostname:db01
防火墙关闭
selinux关闭
环境:Linux发行版本CentOS7.5

—3.2 清理历史环境

[root@db01 ~]# rpm -qa|grep mariadb
yum remove -y mariadb-libs 
\rm -rf /etc/my.cnf*

—3.3 创建用户

useradd mysql
useradd -s /sbin/nologin -M mysql

 -s表示指定用户所用的shell,此处为/sbin/nologin,表示不登录。 -M表示不创建用户主目录。 -g表示指定用户的组名为mysql。 最后的mysql表示用户名。 

—3.4 创建相关目录并授权

mkdir -p /data/app /data/3306/data /data/3306/logs 
chown -R mysql.mysql /data
mysql -V

—3.5 上传 5.7.28 软件至/data/app,并解压、软连接

cd /data/app
tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql

—3.6 设置环境变量

vim /etc/profile 
# 添加最后一行
export PATH=/data/app/mysql/bin:$PATH

#生效配置:
source /etc/profile

—3.7 安装关键依赖软件包

yum install -y libaio-devel

—3.8 初始化数据(建库)

/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data

命令作用: 
将数据启动所需要的系统数据(/data/3306/data)

参数介绍: 
--initialize-insecure 初始化核心参数(必加)
--user=mysql 初始化用户和组
--basedir=/data/app/mysql 软件安装目录
--datadir=/data/3306/data 数据存放位置

彩蛋1: 
5.7 版本初始化参数介绍: 

--initialize-insecure :不安全的初始化
说明: 
初始化完成后是无密码的。

--initialize : 安全的初始化方式 
说明:
1. 自动生成临时密码,第一次使用时需要修改此密码
2. 4种密码复杂度,12位。

彩蛋2: 
5.7 初始化命令: 
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data 
5.6初始化区别()
/data/app/mysql56/scripts/mysql_install_db --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data

—3.9 准备启动脚本

cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysqld

—3.10 准备配置文件

[root@db01 data]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

—3.11 启动数据库

[root@db01 data]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!

[root@db01 data]# service mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!

—3.12 使用systemd管理mysql

[root@db01 data]# chkconfig --add mysqld
[root@db01 data]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
[root@db01 data]# systemctl start mysqld

[root@db01 data]# mysql
[root@db01 data]# ps -ef |grep mysqld
root 17275 1 0 16:00 ? 00:00:00 /bin/sh /data/app/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/db01.pid
mysql 17416 17275 4 16:00 ? 00:00:00 /data/app/mysql/bin/mysqld --basedir=/data/app/mysql --datadir=/data/3306/data --plugin-dir=/data/app/mysql/lib/plugin --user=mysql --log-error=db01.err --pid-file=/data/3306/data/db01.pid --socket=/tmp/mysql.sock
root 17448 16288 0 16:00 pts/1 00:00:00 grep --color=auto mysqld
[root@db01 data]# netstat -tulnp |grep 3306
tcp6 0 0 :::3306 :::* LISTEN 17416/mysqld 
[root@db01 data]# systemctl stop mysqld
[root@db01 data]# netstat -tulnp |grep 3306
ss -lnp|grep 330

—3.13 使用systemd方式管理mysql的第2种配置方式

[root@xiaoyong support-files]#vim /etc/systemd/system/mysqld.service
[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=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

—3.14 基于initialize模式,修改临时密码

[root@db01 data]# mysqladmin -uroot -p password 123
Enter password:初始密码空

—3.15  如果启动报错,如何排查?

[root@db01 data]# /etc/init.d/mysqld start

Starting MySQL.Logging to '/data/3306/data/db01.err'.
. ERROR! The server quit without updating PID file (/data/3306/data/db01.pid).

vim /data/3306/data/db01.err


---》 从后往前排查 [ERROR]信息。
2020-06-29T07:32:32.533458Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2020-06-29T07:32:32.533512Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2020-06-29T07:32:32.533523Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2020-06-29T07:32:33.139530Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2020-06-29T07:32:33.139840Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2020-06-29T07:32:33.140017Z 0 [ERROR] Failed to initialize builtin plugins.
2020-06-29T07:32:33.140055Z 0 [ERROR] Aborting

---》 得到结果: 权限问题

—3.16 MySQL安装后的简单管理

[root@xiaoyong ~]# mysql -uroot -p

—3.17 查看用户密码是否设置成功

5.6版本:
select user,password,host from mysql.user;
5.7版本:
select user,authentication_string,host from mysql.user;
如果记不得部分命令,方法:
desc mysql.user;

用户和密码只能本地登陆,远程无法访问,默认mysql不允许远程登陆,因为没有相关的用户被授权.

 

赞(2)
MySQL学习笔记 » 第2章:MySQL介绍和安装