第一章 – MySQL简介
什么是数据库
数据库实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作。
数据库管理系统(DBMS)
- RDBMS
- 关系型数据库管理系统
- 数据安全性要求较高的应用场景
- Oracle/MySQL/MSSQL/PG
- NoSQL
- 非关系型数据库管理系统
- 针对性能要求较高,数据安全性要求不太高的场景,一般是配合RDBMS使用的产品
- Redis/mongo/ES
- NewSQL
- 分布式数据库管理系统
- TiDB(PingCap)/Spannaer(Google)
MySQL 软件分支
- Oracle MySQL
- MariaDB
- PerconaDB
- 云数据库(RDS MySQL-阿里/腾讯DB…)
MySQL 版本说明
-
**社区版:MySQL Community Edition (GPL) **
- 可以看做是企业版的“广泛体验版(小白鼠版)”,未经各个专有系统平台的压力测试和性能测试
- 基于GPL协议发布,可以随意下载使用 (开源)
- 没有任何官方技术支持服务
-
**企业版:MySQL Enterprise Edition(commercial) **
- 提供了比较全面的高级功能、管理工具及技术支持
- 安全性、稳定性、可扩展性比较好
-
集群版:MySQL Cluster CGE(commercial)
企业新环境的版本选择:
GA 版本 6-12月的产品,一般为偶数版
MySQL 安装方式
安装方式 | 优点 | 缺点 |
---|---|---|
rpm | 安装卸载简单 | 可定制性差 |
glibc(二进制) | 可定制性相比rpm包灵活些 | 安装相比rpm包复杂些,需要手动初始化数据库 |
源码安装 | 可定制性最强,根据需求和功能定制 | 安装麻烦,需要手动初始化数据库 |
MySQL 二进制安装
下载,上传,解压安装包
[root@db01 soft]# mkdir -p /application
[root@db01 soft]# ls
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@db01 soft]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz /application/
[root@db01 soft]# mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql-5.7.26
[root@db01 soft]# ln -s /application/mysql-5.7.26 /application/mysql
创建用户
[root@db01 soft]# useradd -s /sbin/nologin mysql
[root@db01 soft]# id mysql
uid=1000(mysql) gid=1000(mysql) groups=1000(mysql)
添加环境变量
[root@db01 mysql]# vim /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@db01 mysql]# source /etc/profile
[root@db01 mysql]# mysql -V
mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper
创建数据目录与授权
[root@db01 mysql]# mkdir -p /data/mysql/data
[root@db01 mysql]# chown -R mysql:mysql /data/mysql/data/
[root@db01 mysql]# chown -R mysql:mysql /application/mysql-5.7.26/
初始化数据库
[root@db01 mysql]# yum install -y libaio-devel
[root@db01 mysql]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
编写配置文件
以下为最基本的配置
[root@db01 mysql]# vi /etc/my.cnf
[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
配置systemd管理
[root@db01 mysql]# vi /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=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
或者使用sysd启动方式
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
启动MySQL
[root@db01 mysql]# systemctl start mysqld
[root@db01 mysql]# netstat -lntup|grep 3306
tcp6 0 0 :::3306 :::* LISTEN 2529/mysqld
管理员密码设置
[root@db01 mysql]# mysqladmin -uroot password 123
[root@db01 mysql]# mysql -uroot -p123
mysql>
MySQL简单的管理操作
设置管理员密码
mysqladmin -uroot -p password 123456
登录mysql
mysql -uroot -p
查看系统用户
select user,host,password from mysql.user; #5.7以前
select user,host,authentication_string from mysql.user; #5.7以后