MySQL介绍
1.什么是数据?
数据:文字,图片,视频------人类认知的数据表现方式
计算机:二进制,16进制的机器语言
基于数据的重要性和复杂性的不同,我们会有不同的管理方式
适合存储到数据库的数据?
重要性较高
关系较复杂的数据
2.什么是数据管理系统(DBMS)?
RDBMS:关系型数据库管理系统
比较适合于,安全级别要求高的数据以及比较复杂的数据
redis(NoSQL):非关系型数据库管理系统
适合于高性能存储数据,一般是配合RDBS进行使用的
针对大数据处理分析,分布式架构更加擅长
3.数据库管理系统种类
RDBMS:
MySQL,Oracle,MSSQL(SQL server),PG
NoSQL:Not only SQL
键-值(key-value):Redis,memcached
文档(document):MongoDB
4.MySQL简介及产品线
4.1MySQL行业主流版本
5.6
5.7
8.0(经常在官网上看一些新增的特性)
4.2企业版本选择(MySQL分支版本)
Oracle:
MySQL官方版
红帽:
Mariadb
Percona:
PerconDB
4.3版本选择建议要上新环境
1.一般选择官方版本5.6,5.7
2.GA(稳定发布版)
3.6-12月的产品版本
4.4如何获取MySQL软件
企业版:Enterprise,互联网行业一般不选择
社区版本:选择
源码包:source code .tar.gz
通用二进制
公司用的什么版本的数据库,具体什么版本号
5.6.20 5.6.34 5.6.34 5.6.38 5.6.40
5.7.18 5.7.20 5.7.22
如何安装MySQL5.6版本,5.7版本,8.0版本,都有什么不同?
数据库官网下载地址:https://downloads.mysql.com/archives/community/
1.源码安装数据库(5.6.46版)
1)上传或下载代码包
[root@db03 ~]# rz mysql-5.6.46.tar.gz
2)安装依赖
[root@db03 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel
3)解压
[root@db03 ~]# tar xf mysql-5.6.46.tar.gz
4)创建目录
[root@db01 ~]# mkdir /service
5)生成cmake
[root@db03 ~]# cd mysql-5.6.46/
[root@db03 ~]# cmake -DCMAKE_INSTALL_PREFIX=/service/mysql-5.6.46
-DMYSQL_DATADIR=/service/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/service/mysql-5.6.46/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
#程序存放位置
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.38 \
#数据存放位置
-DMYSQL_DATADIR=/application/mysql-5.6.46/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.38/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
#编译
6)编译make
[root@db03 mysql-5.6.46]# make
7)安装make install
[root@db03 mysql-5.6.46]# make install
8)做软连接
[root@db03 ~]# ln -s /service/mysql-5.6.46 /service/mysql
9)创建数据库用户
[root@db02 ~]# useradd mysql -s /sbin/nologin -M
10)拷贝配置文件和启动文件
#1.进入配置文件和脚本的目录
[root@db02 ~]# cd /service/mysql/support-files/
#2.拷贝配置文件
[root@db02 support-files]# cp my-default.cnf /etc/my.cnf
11)配置system管理MySQL服务
#1.配置system管理MySQL
[root@db02 ~]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://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=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#2.重新加载启动文件列表
[root@db02 ~]# systemctl daemon-reload
12)初始化数据)
#1.进入初始化目录
[root@db02 support-files]# cd /service/mysql/scripts/
#2.添加执行权限
chmod +x mysql_install_db
#3.执行初始化命令
[root@db02 scripts]# ./mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
13)创建socket文件目录(二进制安装没有)
#先创建tmp目录
[root@db02 ~]# mkdir /service/mysql/tmp
14)授权数据库目录
[root@db02 ~]# chown -R mysql.mysql /service/mysql
[root@db02 ~]# chown -R mysql.mysql /service/mysql-5.6.46
15)system管理启动MySQL
[root@db02 ~]# systemctl start mysql
[root@db02 ~]# ps -ef | grep [m]ysql
mysql 23509 1 3 22:36 ? 00:00:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
[root@db02 ~]# netstat -lntp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 23509/mysqld
16)配置环境变量直接使用mysql
[root@db02 ~]# vim /etc/profile.d/mysql.sh
export PATH=/service/mysql/bin:$PATH
[root@db02 ~]# source /etc/profile
17)修改root用户密码
[root@db02 ~]# mysql -u root -p #默认root用户密码为空,有多种方式重置root密码
第一种:
MySQL > SET PASSWORD=PASSWORD('123456');
Query OK, 0 rows affected (0.00 sec)
第二种:
MySQL > grant all privileges on *.* to root@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
注意:两种重置密码方式有区别。
2.二进制安装(5.7.28版)
1)上传二进制包
[root@db01 ~]# rz mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
2)安装依赖并且清理环境
[root@db01 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel
[root@db01 ~]# yum remove -y mariadb
3)解压安装包
[root@db01 ~]# tar -xvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
4)创建目录
[root@db01 ~]# mkdir /service
5)移动目录并且改名
[root@db01 ~]# mv mysql-7.28-linux-glibc2.12-x86_64 /app/mysql-5.7.28
6)做软连接
[root@db01 app]# ln -s mysql-5.7.28 /app/mysql
7)创建数据库用户并授权
[root@db01 app]# useradd mysql -s /sbin/nologin -M
[root@db01 app]# mkdir data
[root@db01 app]# chown -R mysql. /service/*
8)拷贝配置文件和启动文件
1.5.7版本的my.cnf文件要自己准备
[root@db01 support-files]# cat /etc/my.cnf
[mysqld]
user=mysql
basedir=/service/mysql
datadir=/service/mysql/data
server_id=6
port=3306
socket=/service/mysql/mysql.sock
log-error=/service/mysql/data/mysql.err
log-bin=/service/mysql/data/mysql-bin
sync_binlog=1
binlog_format=row
secure-file-priv=/tmp
explicit_defaults_for_timestamp=true
[mysql]
socket=/service/mysql/mysql.sock
2.进入配置文件和脚本的目录
[root@db01 app]# cd mysql/support-files/
3.拷贝启动脚本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
9)初始化数据库
[root@db01 mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
[root@db01 mysql]# ./bin/mysqld_safe --defaults-file=/etc/my.cnf &
10)启动数据库
[root@db01 ~]# /service/mysql/bin/mysql
11)修改密码
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123';
12)检查进程和端口
[root@db01 ~]# ps -ef | grep [m]ysql
13)配置system管理MySQL服务
#1.配置system管理MySQL
[root@db01 ~]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://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=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#2.重新加载启动文件列表
[root@db01 ~]# systemctl daemon-reload
14)配置环境变量直接使用mysql
[root@db01 ~]# vim /etc/profile.d/mysql.sh
export PATH=/service/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile
15)再次登录数据库
[root@db01 ~]# mysql -u root -p
Enter password: 123
3.yum安装(5.7.33版)
#1.yum install -y yum-utils wget
#2.wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
#3.rpm -qa | grep 'mariadb'
#4.rpm -ivh mysql80-community-release-el7-3.noarch.rpm
#5.rm -rf mysql80-community-release-el7-3.noarch.rpm
#6.yum update
#7.yum makecache
#8.yum-config-manager --disable mysql80-community
#9.yum-config-manager --enable mysql57-community
#10.yum repolist all | grep 'mysql'
#11.yum install -y mysql-community-server
#12查看密码语句
cat /var/log/mysqld.log | grep 'password'
#13.systemctl start mysql
#14.修改密码语句
alter user 'root'@'localhost' identified with mysql_native_password by 'Aa123456.';
4. MySQL-8.0.18版本二进制部署安装
1)上传代码
rz mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
2)解压
tar xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
3)移动目录并改名
mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql80
mv mysql80 /usr/local/
cd /usr/local/mysql80/
ll
drwxr-xr-x 2 7161 31415 4096 9月 20 2019 bin
drwxr-xr-x 2 7161 31415 86 9月 20 2019 docs
drwxr-xr-x 3 7161 31415 282 9月 20 2019 include
drwxr-xr-x 7 7161 31415 4096 9月 20 2019 lib
-rw-r--r-- 1 7161 31415 408918 9月 20 2019 LICENSE
-rw-r--r-- 1 7161 31415 102977 9月 20 2019 LICENSE.router
drwxr-xr-x 4 7161 31415 30 9月 20 2019 man
-rw-r--r-- 1 7161 31415 687 9月 20 2019 README
-rw-r--r-- 1 7161 31415 700 9月 20 2019 README.router
drwxrwxr-x 2 7161 31415 6 9月 20 2019 run
drwxr-xr-x 28 7161 31415 4096 9月 20 2019 share
drwxr-xr-x 2 7161 31415 77 9月 20 2019 support-files
drwxr-xr-x 3 7161 31415 17 9月 20 2019 var
4)修改配置文件
cat > /data/mysql80/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql80
datadir=/data/mysql80/data
socket=/tmp/mysql80.sock
user=mysql
log_error=/tmp/mysql80.log
skip_name_resolve
log_bin=/data/mysql80/mysql-bin
port=8006
server_id=8006
EOF
5)准备启动脚本
cat >/etc/systemd/system/mysqld80.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=/usr/local/mysql80/bin/mysqld --defaults-file=/data/mysql80/my.cnf
LimitNOFILE = 5000
EOF
6)初始化数据
/usr/local/mysql80/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql80 --datadir=/data/mysql80/data
7)授权
chown -R mysql.mysql /data
8)启动数据库
systemctl start mysqld80
/usr/local/mysql80/bin/mysql -S /tmp/mysql80.sock
Server version: 8.0.18 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
5)MySQL忘了root密码要如何操作?
1. 挂维护页
2. 关数据库
[root@db01 ~]# systemctl stop mysqld
3. 跳过授权启动
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
--skip-grant-tables : 连接层关闭验证模块,所有验证表不加载。
--skip-networking :连接层关闭TCP/IP协议,禁止远程访问。
4. 改密码
mysql> alter user root@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> alter user root@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
mysql>
[root@db01 ~]# pkill mysqld
[root@db01 ~]# systemctl start mysqld
5.正常开启业务