MySQL介绍与安装
数据库管理系统
DBMS(database management system)
管理数据
存储数据
数据库管理系统类型
关系型数据库 RDBMS
所有的表都是有二维表组成
表与表之间有关联
使用SQL(结构化查询语言)语句来管理
非关系型数据库NoSQL
不需要使用SQL语句,没有二维表
常见的数据库
关系型: MySQL、mariadb、Oracle、PostgreSQL、MSSQL
非关系型:Redis(键值对)、MongoDB(文档型数据库)、elasticsearch(搜索引擎数据库)、memcached(键值对)
InfluxDB:Time Series 时序数据库(适合出图,查询时间轴数据方便)
OpenTSDB:Time Series 时序数据库(适合出图,查询时间轴数据方便)
etcd:键值对数据库(配置文件管理中心)
MySQL的安装5.6----源码
下载源码包 https://www.mysql.com/
MySQL5.6:GA 6-12个月,小版本号为偶数版的
# 0.安装依赖
[root@db01 mysql-5.6.50]# yum install -y cmake openssl-devel ncurses-devel autoconf libaio-devel
# 1.解压
[root@db01 ~]# mkdir /app
[root@db01 ~]# tar xf mysql-5.6.50.tar.gz
# 2.生成 ./configure --prefix=xxx cmake
#程序存放位置
cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.6.50 \
#数据存放位置
-DMYSQL_DATADIR=/app/mysql-5.6.50/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/app/mysql-5.6.50/tmp/mysql.sock \
#使用utf8字符集
-DDEFAULT_CHARSET=utf8 \
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci \
#使用其他额外的字符集
-DWITH_EXTRA_CHARSETS=all \
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled \
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled \
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1 \
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默认为禁用)
-DWITH_DEBUG=0
cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.6.50 \
-DMYSQL_DATADIR=/app/mysql-5.6.50/data \
-DMYSQL_UNIX_ADDR=/app/mysql-5.6.50/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
# 3.编译安装
[root@db01 mysql-5.6.50]# make && make install
# 4.添加环境变量
[root@db02 ~]# echo 'export PATH="/app/mysql-5.6.50/bin:$PATH"' > /etc/profile.d/mysql.sh
# 5.加载环境变量
[root@db02 ~]# source /etc/profile
# 6.启动MySQL
[root@db02 ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
# 7.检查端口
[root@db01 mysql-5.6.50]# netstat -lntup
tcp6 0 0 :::3306
二进制安装MySQL5.6
# 0.安装依赖
[root@db01 mysql-5.6.50]# yum install -y cmake openssl-devel ncurses-devel autoconf libaio-devel
# 1.创建app目录
[root@db02 ~]# mkdir /app
# 2.解压
[root@db02 ~]# tar xf mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz -C /app
# 3.改名
[root@db02 ~]# mv /app/mysql-5.6.50-linux-glibc2.12-x86_64 /app/mysql-5.6.50
# 4.创建MySQL程序用户
[root@db02 ~]# useradd mysql -s /sbin/nologin -M
# 5.拷贝MySQL的配置文件到/etc/下
[root@db02 ~]# \cp /app/mysql-5.6.50/support-files/my-default.cnf /etc/my.cnf
[root@db01 mysql-5.6.50]# cat /etc/my.cnf
[mysqld]
# 6.拷贝启动脚本
[root@db02 ~]# cp /app/mysql-5.6.50/support-files/mysql.server
/etc/init.d/mysqld
# 7.初始化MySQL
[root@db02 mysql-5.6.50]# /app/mysql-5.6.50/scripts/mysql_install_db --
user=mysql --basedir=/app/mysql-5.6.50 --datadir=/app/mysql-5.6.50/data
# 8.启动MySQL
[root@db02 ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
# 9.检查端口
[root@db01 mysql-5.6.50]# netstat -lntup
tcp6 0 0 :::3306
# 10.添加环境变量
[root@db02 ~]# echo 'export PATH="/app/mysql-5.6.50/bin:$PATH"' > /etc/profile.d/mysql.sh
# 11.加载环境变量
[root@db02 ~]# source /etc/profile
报错原因解析
# 报错原因:编译的时候指定socket文件存放在此处
# 解决方案:创建
[root@db01 mysql-5.6.50]# mkdir /app/mysql-5.6.50/tmp
# 报错原因:存放socket文件的目录没有权限
# 解决方案:授权
[root@db01 mysql-5.6.50]# chown -R mysql.mysql /app/mysql-5.6.50/
# 报错原因:二进制安装的MySQL,MySQL没有安装在默认的/usr/local/mysql目录下
# 解决方案:
1) 方法一:修改脚本
:%s#/usr/local/mysql#/app/mysql-5.6.50#g
2)方法二:修改配置文件
[root@db02 ~]# vim /etc/my.cnf
[mysqld]
basedir=/app/mysql-5.6.50
datadir=/app/mysql-5.6.50/data
二进制安装MySQL5.7
#### 比5.6多的新功能
将代码的数据转化成Json格式:序列化
代码接收到Json格式的数据后,转化成自己代码认识的数据类型:反序列化
# 0.安装依赖
[root@db04 ~]# yum install -y libaio-devel
# 1.创建目录
[root@db04 ~]# mkdir /app
# 2.解压
[root@db04 ~]# tar xf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz -C /app
# 3.改名
[root@db04 ~]# mv /app/mysql-5.7.42-linux-glibc2.12-x86_64 /app/mysql-5.7.42
# 4.软链接
[root@db04 ~]# ln -s /app/mysql-5.7.42 /app/mysql
# 5.创建MySQL用户
[root@db04 ~]# useradd mysql -s /sbin/nologin -M
# 6.拷贝启动脚本
[root@db04 ~]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
# 7.准备配置文件
[root@db04 ~]# vim /etc/my.cnf
[mysqld]
basedir=/app/mysql
datadir=/app/mysql/data
# 8.初始化
## 不带初始化密码
[root@db04 ~]# /app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data
## 带初始化密码
[root@db04 ~]# /app/mysql/bin/mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data
# 9.授权
[root@db04 ~]# chown -R mysql.mysql /app/mysql*
# 10.启动MySQL
[root@db04 ~]# /etc/init.d/mysqld start
# 11.环境变量
[root@db04 ~]# echo 'export PATH="/app/mysql/bin:$PATH"' >/etc/profile.d/mysql.sh
# 12.加载环境变量
[root@db04 ~]# source /etc/profile
# 13.设置root密码
[root@db04 ~]# mysqladmin -uroot password '123'
mysql> alter user root@'localhost' identified by '123';
# 14.使用systemd管理
[root@db04 ~]# cp /usr/lib/systemd/system/{sshd,mysqld}.service
[root@db04 ~]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target
Wants=multi-user.target
[Service]
ExecStart=/app/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
change master to
master_host='172.16.1.51',
master_user='rep',
master_password='123',
master_log_file='mysql-bin.000002',
master_log_pos=446,
master_port=3306;