1. MySQL的介绍
重点概念介绍:关系型数据库
关系:关系就是二维表,其中:表中的行、列次序并不重要
行row:表中的每一行,又称为一条记录
列column:表中的每一列,称为属性,字段
主键Primary key:用于唯一确定一个记录的字段
域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值
联系类型
数据的操作:在数据集合同提取感兴趣的内容。SELECT
数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE
联系的类型
一对一联系(1:1)
一对多联系(1:n)
多对多联系(m:n)
基本概念
约束:constraint,表中的数据要遵守的限制
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识才行;必须提供数据,即NOT NULL,一个表只能有一个
唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个
外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
检查:字段值在一定范围内
索引:将表中的一个或多个字段中的数据复制一份另存,并且按特定次序排序存储
关系运算:
选择:挑选出符合条件的行
投影:挑选出需要的字段
连接:表间字段的关联
2. MySQL的安装
2.1 RPM包直接安装
2.1.1 软件版本查看
CentOS6以及之前版本:查看自带软件版本
[root@node1 ~]# yum info mysql
Available Packages
Name : mysql
Version : 5.1.73
[root@node1 ~]# yum info mysql-server
Available Packages
Name : mysql-server
Version : 5.1.73
CentOS7版本:查看自带软件版本
[root@centos7 ~]# yum info mariadb
Available Packages
Name : mariadb
Version : 5.5.64
[root@centos7 ~]# yum info mariadb-server
Available Packages
Name : mariadb-server
Version : 5.5.64
2.1.2 安装
CentOS6安装
[root@node1 ~]# yum -y install mysql-server
[root@node1 ~]# rpm -ql mysql-server
/etc/rc.d/init.d/mysqld 对应进程名
/usr/bin/mysqld_safe
/usr/bin/mysqldumpslow
/var/lib/mysql
/var/log/mysqld.log
/var/run/mysqld
[root@node1 ~]# ss -ntul |grep 3306
[root@node1 ~]# service mysqld status
mysqld is stopped
[root@node1 ~]# service mysqld start
[root@node1 ~]# service mysqld status
mysqld (pid 1868) is running...
[root@node1 ~]# ss -ntul |grep 3306
tcp LISTEN 0 50 *:3306 *:*
[root@node1 ~]# pstree -p|grep mysqld
|-mysqld_safe(1766)---mysqld(1868)-+-{mysqld}(1870)
| |-{mysqld}(1871)
| |-{mysqld}(1872)
...
CentOS7安装
[root@centos7 ~]# yum install mariadb-server -y
[root@centos7 ~]# rpm -ql mariadb-server
/etc/my.cnf.d/server.cnf mysql的配置文件
/usr/lib/systemd/system/mariadb.service 对应的服务名
/var/lib/mysql 数据库存放的路径
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
[root@centos7 ~]# ss -untl |grep 3306
[root@centos7 ~]# systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@centos7 ~]# systemctl start mariadb
[root@centos7 ~]# ss -untl |grep 3306
tcp LISTEN 0 50 *:3306 *:*
[root@centos7 ~]# systemctl status mariadb
Active: active (running) since Sun 2020-04-12 20:09:50 CST; 5s ago
[root@centos7 ~]# pstree -p|grep mysqld
|-mysqld_safe(2776)---mysqld(2938)-+-{mysqld}(2942)
| |-{mysqld}(2943)
...
网络yum获取
[root@node2 ~]#cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.2/centos7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
[root@node2 ~]#yum repolist
[root@node2 ~]#yum install MariaDB-server
[root@node2 ~]#rpm -ql MariaDB-server
[root@node2 ~]#systemctl start mariadb
[root@node2 ~]#ss -ntl
2.2 二进制安装
2.2.1 安装过程介绍
1. 准备用户
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
2. 准备数据目录,建议使用逻辑卷
mkdir /data/mysql
chown mysql:mysql /data/mysql
3. 准备二进制程序
tar xf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -sv mariadb-VERSION mysql
chown -R root:mysql /usr/local/mysql/
4. 准备配置文件
mkdir /etc/mysql/
cp support-files/my-large.cnf /etc/mysql/my.cnf
[mysqld]中添加三个选项:
datadir = /data/mysql
innodb_file_per_table = on
skip_name_resolve = on 禁止主机名解析,建议使用
5. 创建数据库文件
cd /usr/local/mysql/
./script/mysql_install_db --datadir=/data/mysql --user=mysql
6. 准备服务脚本,并启动服务
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
service mysqld start
7. PATH路径
echo 'PATH=/user/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
8. 安全初始化
/user/local/mysql/bin/mysql_secure_installation
2.2.2 安装
1. 准备用户
[root@centos7 ~]# getent passwd mysql
[root@centos7 ~]# mkdir -p /data/mysql
[root@centos7 ~]# chown mysql:mysql /data/mysql
[root@centos7 ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql
2. 准备二进制程序
[root@centos7 ~]# tar xvf mariadb-10.2.23-linux-x86_64.tar.gz -C /usr/local
[root@centos7 ~]# cd /usr/local/
[root@centos7 local]# ls
bin etc games include lib lib64 libexec mariadb-10.2.23-linux-x86_64 sbin
share src
[root@centos7 local]# ln -s mariadb-10.2.23-linux-x86_64/ mysql
[root@centos7 local]# ll
lrwxrwxrwx. 1 root root 29 Apr 12 19:50 mysql -> mariadb-10.2.23-linux-x86_64/
[root@centos7 local]# ll mysql/
drwxrwxr-x. 2 1021 1004 4096 Dec 20 2018 bin
-rw-r--r--. 1 1021 1004 17987 Mar 24 2019 COPYING
[root@centos7 local]# chown -R root.mysql mysql/
[root@centos7 local]# ll mysql/
drwxrwxr-x. 2 root root 4096 Dec 20 2018 bin
-rw-r--r--. 1 root root 17987 Mar 24 2019 COPYING
4. 准备配置文件
[root@centos7 ~]# mkdir /etc/mysql/
[root@centos7 mysql]# cd /usr/local/mysql
[root@centos7 mysql]# pwd
/usr/local/mysql
[root@centos7 mysql]# cp support-files/my-huge.cnf /etc/mysql/my.cnf
[root@centos7 mysql]# vim /etc/mysql/my.cnf
[mysqld]
datadir=/data/mysql
innodb_file_per_table = on
skip_name_resolve = on 禁止主机名解析,建议使用
5. 创建数据库文件
[root@centos7 mysql]# pwd
/usr/local/mysql
[root@centos7 mysql]# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
6. 准备服务脚本,并启动服务
[root@centos7 mysql]# pwd
/usr/local/mysql
[root@centos7 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@centos7 mysql]# chkconfig --list
[root@centos7 mysql]# chkconfig --add mysqld
[root@centos7 mysql]# chkconfig --list
[root@centos7 mysql]# service mysqld start
7. PATH路径
[root@centos7 mysql]# pwd
/usr/local/mysql
[root@centos7 mysql]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
8. 安全初始化
[root@centos7 ~]# mysql_secure_installation
9. 初始化成功
[root@centos7 ~]# mysql -uroot -pcentos
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 21
Server version: 10.2.23-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
2.3 源码编译安装
2.3.1 准备工作
a. 制作逻辑卷
b. 源码包的准备
c. mysql目录用户的建立
[root@centos7 ~]# fdisk /dev/sda
Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (325064704-419430399, default 325064704):
Using default value 325064704
Last sector, +sectors or +size{K,M,G} (325064704-419430399, default 419430399):
Using default value 419430399
Partition 6 of type Linux and of size 45 GiB is set
Command (m for help): L
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
Command (m for help): t
Partition number (1-6, default 6):
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w
[root@centos7 ~]# lsblk
[root@centos7 ~]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[root@centos7 ~]# lsblk
[root@centos7 ~]# pvcreate /dev/sda6
Physical volume "/dev/sda6" successfully created.
[root@centos7 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda6 lvm2 --- <45.00g <45.00g
[root@centos7 ~]# vgs
[root@centos7 ~]# vgcreate vg0 /dev/sda6 -s 16M
Volume group "vg0" successfully created
[root@centos7 ~]# vgdisplay
--- Volume group ---
VG Name vg0
[root@centos7 ~]# lvcreate -n mysql -l 100%free vg0
Logical volume "mysql" created.
[root@centos7 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg0/mysql
LV Name mysql
VG Name vg0
[root@centos7 ~]# mkdir /data/mysql
[root@centos7 ~]# mkfs.xfs /dev/vg0/mysql
[root@centos7 ~]# blkid
/dev/mapper/vg0-mysql: UUID="88b8cddf-fb3d-47a9-8cd4-909a34723466" TYPE="xfs"
[root@centos7 ~]# vim /etc/fstab
UUID=88b8cddf-fb3d-47a9-8cd4-909a34723466 /data/mysql xfs defaults 0 0
[root@centos7 ~]# mount -a
[root@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-mysql 45G 33M 45G 1% /data/mysql
[root@centos7 ~]# getent passwd mysql
[root@centos7 ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql
[root@centos7 ~]# ll -d mysql
ls: cannot access mysql: No such file or directory
[root@centos7 ~]# ll -d /data/mysql/
drwxr-xr-x. 2 root root 6 Apr 12 22:37 /data/mysql/
[root@centos7 ~]# chown mysql.mysql /data/mysql/
[root@centos7 ~]# ll -d /data/mysql/
drwxr-xr-x. 2 mysql mysql 6 Apr 12 22:37 /data/mysql/
2.3.2 源码编译
[root@centos7 ~]# yum install bison bison-devel zlib-devel libcurl-devel \
libarchive-devel boostdevel gcc gcc-c++ cmake ncurses-devel openssl-devel\
gnutls-devel libxml2-devel openssldevel libevent-devel libaio-devel
[root@centos7 mariadb-10.2.23]# cd mariadb-10.2.23
[root@centos7 mariadb-10.2.23]# cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
[root@centos7 mariadb-10.2.23]# make -j 2 && make install && echo -e '\a' && date
2.3.3 完成
-- Installing: /app/mysql/share/aclocal/mysql.m4
-- Installing: /app/mysql/support-files/mysql.server
Mon Apr 13 00:06:56 CST 2020
[root@centos7 mariadb-10.2.23]# date
Mon Apr 13 00:15:01 CST 2020
到/app/mysql路径下,参照二进制安装进行相同配置即可
网友评论