记录 MySQL的学习过程(1) 安装及初始化篇

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已经起来了

猜你喜欢

转载自www.cnblogs.com/ruiruiblog/p/12706182.html
今日推荐