数据库MySQL安装部署

MySQL 大纲介绍

官方定义的MySQL DBA工作内容

(1)运维DBA
初级:各版本、各平台安装搭建、升级
中级:体系结构原理、基础管理(启动关闭、初始化配置文件管理、多实例管理、用户权限管理、基本SQL(增删改查))、
日志管理、备份与恢复、主从复制(构建、状态监控)
高级:高可用(MGR、InnoDB Cluster)、高性能(优化)

(2)开发DBA
懂至少一门开发语言 :JAVA、Python
基本SQL语句深入学习(增删改查)、数据库结构设计(建模)
高级SQL:存储过程、函数、触发器、视图、事件

MySQL 介绍和安装

什么是数据?

1
2
3
4
5
6
7
数据:文字、图片、视频。。。人类认知的数据表现方式
计算机:二进制、16进制的机器语言
基于数据的重要性和复杂性的不同,我们可能有不同的管理方式。

哪些数据是适合存储到数据库的呢?
重要性比较高的
关系较复杂的数据

什么是数据库管理系统(DBMS)?

RDBMS: 关系型数据库管理系统
比较适合于,安全级别要求高的数据以及关系较复杂的数据

NoSQL:非关系型数据库管理系统
适合于高性能存取数据,一般是配合RDBMS进行使用的
针对大数据处理分析,分布式架构更加擅长

数据库管理系统种类

1
2
3
4
5
6
RDBMS  :
MySQL 、Oracle、MSSQL(SQL Server)、PG

NoSQL:Not Only SQL
键-值(key-value):Redis, memcached
文档(document):Mongodb

MYSQL二进制安装方法

MySQL二进制安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
### 上传软件到此目录
mkdir -p /server/tools/
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
### 创建软件目录
mkdir /app
### 解压并改名为mysql
mv mysql-5.7.33-linux-glibc2.12-x86_64 /app/mysql
ls -l /app/mysql/
total 36
drwxr-xr-x 2 root root 4096 Mar 4 14:55 bin
-rw-r--r-- 1 7161 31415 17987 Sep 13 2017 COPYING
drwxr-xr-x 2 root root 55 Mar 4 14:55 docs
drwxr-xr-x 3 root root 4096 Mar 4 14:55 include
drwxr-xr-x 5 root root 229 Mar 4 14:55 lib
drwxr-xr-x 4 root root 30 Mar 4 14:55 man
-rw-r--r-- 1 7161 31415 2478 Sep 13 2017 README
drwxr-xr-x 28 root root 4096 Mar 4 14:55 share
drwxr-xr-x 2 root root 90 Mar 4 14:55 support-files

### 修改环境变量
vim /etc/profile
export PATH=/app/mysql/bin:$PATH
source /etc/profile

### 建立mysql用户和组(如果已有可忽略) useradd mysql
### 创建相关目录并修改权限
mkdir /data/mysql -p
chown -R mysql.mysql /app/*
chown -R mysql.mysql /data/*

初始化数据(建库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
### 方法一
# 初始化数据,初始化管理员的临时密码
yum -y install libaio-devel
mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/data/mysql

新特性重要说明:
5.7版本开始,MySQL加入了全新的 密码的安全机制:
1.初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)
2.密码复杂度:长度:超过12位? 复杂度:字符混乱组合
3.密码过期时间180天

### 方法二
\rm -rf /data/mysql/*
mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/mysql

注释:5.6初始化的区别

1
/app/mysql/scripts/mysql_install_db  --user=mysql --datadir=/application/mysql/data --basedir=/application/mysql

书写默认配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
vim /etc/my.cnf
## 服务器端配置
[mysqld]
##用户
user=mysql
## 软件安装路径
basedir=/app/mysql
## 数据存放路径
datadir=/data/mysql
## 服务器id号
server_id=6
## 端口号
port=3306
## 错误日志存放
log-error=/app/mysql/logs/error.log
## binlog日志 开启MySQL主从和恢复使用
log-bin=/app/mysql/mysql-bin/mysql-bin
## socket文件路径
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
## 数据库提示信息
prompt=3306 [\\d]>

启动MySQL默认会加载配置文件:

etc/my.cnf—>/etc/mysql/my.cnf—>/usr/etc/my.cnf—> ~/.my.cnf
如果冲突,以最后一个读取的为准。
[mysqld]组中包括了mysqld服务启动时的初始化参数
[client]组中包含着客户端工具程序可以读取的参数,此外还有其他针对各个客户端软件的特定参数组等

配置启动脚本

SysVinit管理MySQL

1
2
3
4
cd /app/mysql/support-files
./mysql.server start
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld

systemd管理MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

简单管理

1
2
3
4
5
6
7
8
### 设置root用户登录密码
mysqladmin -uroot -p password 123
### 5.6版本:
select user,password,host from mysql.user;

### 5.7 中用户基本信息
select user,authentication_string,host from mysql.user;
desc mysql.user;

小结

  1. 版本 (主流版本的GA时间了解一下)5.6 5.7
    (1) 初始化方式变了
    mysql_install_db
    mysqld –initialize-insecure
    (2) 用户安全
    12位
    180
    4种复杂度
    (3)密码字段
    authentication_strings

  2. 建库(初始化数据库)mysqld –intialize-insecure –user=mysql –basedir=/app/mysql –datadir=/data/mysql

  3. 简易的配制文件/etc/my.cnf
    user
    basedir
    datadir
    server_id
    port
    socket

  4. 管理员密码mysqladmin -uroot -p password xx