1.数据库的分类
RDBMS oracle MySQL PG MSSQL
NoSQL MongoDB Redis ES
NEWSQL Tidb Spanner ALISQL(RDS+DRDS) OB PloarDB
2.版本的选择
一般选择 GA 稳定版
5.6.38(2017-09-13)发布
5.7.20(2017-09-13)发布
8.0 一般用于测试环境
3.数据库的下载 一般选择二进制版本(绿色版) 即 Linux - Generic
[root@localhost ~]# rpm -qa | grep mariadb #先移除本机安装过的mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[root@localhost ~]# yum -y remove mariadb-libs-5.5.64-1.el7.x86_64
[root@localhost ~]# mkdir /application
[root@localhost ~]# mkdir /server/tools -p
[root@localhost tools]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@localhost tools]# tar xvzf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@localhost tools]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql/ #此操作将移动文件夹并重命名为mysql
[root@localhost ~]# useradd -s /sbin/nologin mysql #创建mysql用户
下面修改环境变量
[root@localhost ~]# vim /etc/profile
在最后一行后添加
export PATH=/application/mysql/bin:$PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mysql -V #验证
mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper
4.数据库的组成
一般来说数据库的组成分为
\application (程序部分)
\data (数据部分)
在生产环境中,这2个部分应该分开,最好放到不同的磁盘中
关掉虚拟机,向其中新增一块20g的磁盘
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 56.7G 0 part /
sdb 8:16 0 20G 0 disk #sbd为新增盘
[root@localhost ~]# mkfs.xfs /dev/sdb #linux下不用分区 直接就可以格式化
[root@localhost ~]# blkid #查看uuid
/dev/sdb: UUID="5016bf0e-1e46-428e-a177-fb2f20a3c5e6" TYPE="xfs"
...
[root@localhost ~]# vim /etc/fstab #编辑fstab 在最后一行增加一下内容
UUID=5016bf0e-1e46-428e-a177-fb2f20a3c5e6 /data xfs defaults 0 0
然后mount一下,就可以看到挂载成功了
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 57G 4.4G 53G 8% /
/dev/sda1 297M 114M 184M 39% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/sdb 20G 33M 20G 1% /data
下面给mysql用户授权
[root@localhost ~]# chown -R mysql.mysql /application/*
[root@localhost ~]# chown -R mysql.mysql /data
5.初始化数据(创建系统数据)
5.6 和 5.7 初始化的方式不一样
5.6的初始化命令为
/application/mysql/scripts/mysql_install_db
5.7的初始化操作如下:
[root@localhost ~]# mkdir /data/mysql/data -p #创建存放系统数据的文件夹
[root@localhost ~]# chown -R mysql.mysql /data #赋予权限
[root@localhost ~]#yum -y install libaio-devel #安装依赖包
[root@localhost ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data #初始化
2020-04-15T06:46:26.554152Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --
explicit_defaults_for_timestamp server option (see documentation for more details).
2020-04-15T06:46:28.486827Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-04-15T06:46:29.106452Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-04-15T06:46:29.316488Z 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: d5d1d9e9-7ee4-11ea-8562-000c292cf377.
2020-04-15T06:46:29.319034Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-04-15T06:46:29.383438Z 1 [Note] A temporary password is generated for root@localhost: PQ3h1i6D8f!O
使用上面的初始化命令会做一下几件事
a.定义密码强度 12位 4种混合
b.密码过期时间 180天
c.给root用户设置临时密码
也可以是用别的命令来取消上面的3种限制
先删除之前的初始化数据(否则无法进行)
[root@localhost ~]# rm -fr /data/mysql/data/*
[root@localhost ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data #无
限制,无密码
刚才的初始化操作,实际上就是在向/data/mysql/data/中写入数据,这些数据我们称之为系统数据
下面先向my.cnf中写一些配置进去
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
6.启动数据库
a.sys-v的方式
[root@localhost ~]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# service mysqld start # stop|restart 都可以使用
也可以使用绝对路径
[root@localhost ~]# /etc/init.d/mysqld stop # start|restart
b.systemd 的方式
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
然后就可以使用 systemctl start mysqld 命令了
[root@localhost ~]# netstat -tnlp | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 2514/mysqld
此时发现3306 port已经起来了