咱们认为的数据:
文字、数字、符号、表格、图片、视频…
计算机认为的数据:
二进制(机器语言)
第一时代架构 : RDBMS时代
什么是RDBMS?
关系型数据库关系系统:Oracle 、 MSSQL 、 IBM DB2
第二时代架构: RDBMS(MySQL、PG、云数据库) + NoSQL(Not ONLY SQL)时代
数据量、业务量随着互联网的发展,变的越来越大。所以传统的RDBMS已经不能承载所有业务需求了。
NoSQL :MongoDB 、ES 、Redis
第三时代架构:
NewSQL 分布式数据库时代
Aliyun: PolarDB
Pincap: TiDB
面试题
请你介绍以下你熟悉的数据库产品?
RDBMS : 关系型 Oracle 、MySQL、MSSQL、PG、DB2
NoSQL : 非关系型 MongoDB 、ES 、Redis
云产品: RDS 、 TDSQL
NewSQL: polarDB 、TiDB
你们公司都用了什么数据库产品?
注意: 一般用了云产品的话,很少自建数据库。
我们建议:
RDBMS : 关系型 Oracle 、MySQL、MSSQL、PG、DB2 (最多两种)
NoSQL : 非关系型 MongoDB 、ES 、Redis (一般互联网公司都有)
分支
E : 企业版 (收费),可以下载30天试用
C : 社区版 (开源)
社区版选择
免费服务期限: 1-5年
扩展服务期限: 6-10年
5.7 :一般建议升级到最新版本,5.7.18-5.7.30 最好是双数版。
5.6 :一般建议选用GA6-12月区间,5.6.34-max,最好是双数版本。
8.0 :一般建议使用8.0.18+
克隆虚拟机
IP: 10.0.0.51/24
hostname: db01
防火墙关闭
selinux关闭
清理历史环境
yum remove -y mariadb-libs
\rm -rf /etc/my.cnf*
useradd mysql
mkdir -p /data/app /data/3306/data /data/3306/logs
chown -R mysql.mysql /data
[root@db01 ~]# cd /data/app
[root@db01 app]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@db01 app]# ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql
vim /etc/profile
#添加最后一行
export PATH=/data/app/mysql/bin:$PATH
#生效配置:
source /etc/profile
yum install -y libaio-devel
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data
命令作用:
将数据启动所需要的系统数据(/data/3306/data)
参数介绍:
--initialize-insecure 初始化核心参数(必加)
--user=mysql 初始化用户和组
--basedir=/data/app/mysql 软件安装目录
--datadir=/data/3306/data 数据存放位置
[root@db01 data]# cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@db01 data]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
[root@db01 data]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
[root@db01 data]# service mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[root@db01 data]# chkconfig --add mysqld
[root@db01 data]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
[root@db01 data]# systemctl start mysqld
[root@db01 data]# mysql
[root@db01 data]# ps -ef |grep mysqld
root 17275 1 0 16:00 ? 00:00:00 /bin/sh /data/app/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/db01.pid
mysql 17416 17275 4 16:00 ? 00:00:00 /data/app/mysql/bin/mysqld --basedir=/data/app/mysql --datadir=/data/3306/data --plugin-dir=/data/app/mysql/lib/plugin --user=mysql --log-error=db01.err --pid-file=/data/3306/data/db01.pid --socket=/tmp/mysql.sock
root 17448 16288 0 16:00 pts/1 00:00:00 grep --color=auto mysqld
[root@db01 data]# netstat -tulnp |grep 3306
tcp6 0 0 :::3306 :::* LISTEN 17416/mysqld
[root@db01 data]# systemctl stop mysqld
[root@db01 data]# netstat -tulnp |grep 3306
[root@db01 data]# mysqladmin -uroot -p password 123
Enter password:
mysql> select user,host,authentication_string ,plugin from mysql.user;
+---------------+-----------+-------------------------------------------+-----------------------+
| user | host | authentication_string | plugin |
+---------------+-----------+-------------------------------------------+-----------------------+
| root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | mysql_native_password |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
+---------------+-----------+-------------------------------------------+-----------------------+
3 rows in set (0.00 sec)
#如果记不住单词,可以执行以下命令
mysql> desc mysql.user;
mysql> alter user oldguo@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host,authentication_string ,plugin from mysql.user;
+---------------+-----------+-------------------------------------------+-----------------------+
| user | host | authentication_string | plugin |
+---------------+-----------+-------------------------------------------+-----------------------+
| root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | mysql_native_password |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| oldguo | 10.0.0.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password |
+---------------+-----------+-------------------------------------------+-----------------------+
4 rows in set (0.00 sec)
mysql> drop user oldguo@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host,authentication_string ,plugin from mysql.user;
+---------------+-----------+-------------------------------------------+-----------------------+
| user | host | authentication_string | plugin |
+---------------+-----------+-------------------------------------------+-----------------------+
| root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | mysql_native_password |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
+---------------+-----------+-------------------------------------------+-----------------------+
3 rows in set (0.00 sec)
作用
控制用户,能够对数据库对象做哪些操作
定义方式
命令即权限
mysql> show privileges; #查看MySQL中的权限列表
Alter
Alter routine
Create
Create routine
Create temporary tables
Create view
Create user
Delete
Drop
Event
Execute
File
Grant option
Index
Insert
Lock tables
Process
Proxy
References
Reload
Replication client
Replication slave
Select
Show databases
Show view
Shutdown
Super
Trigger
Create tablespace
Update
Usage
说明:
特殊的权限ALL:代表了以上所有权限结合,除了Grant option(给别人授权的功能)。
一般管理员用户会具备ALL,其他普通用户按需提供相应权限,一般DROP种类的权限不会给普通用户。
#权限查询
mysql> show grants for root@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
授权
GRANT 权限 ON 作用范围 TO 用户 IDENTIFIED BY ‘密码’;
作用范围 ?
. : 全局范围 chmod -R /
wordpress.* : 单库范围 chmod -R /wordpress
wordpress.t1:单表范围 chmod -R /wordpress/a.txt
管理员用户授权:
mysql> grant all on *.* to oldboy@'10.0.0.%' identified by '123';
普通用户授权:
mysql> grant select,update,delete,insert on test.* to test@'10.0.0.%' idenfied by '123';
mysql> revoke delete on test.* from 'test'@'10.0.0.%';
自带客户端命令
#mysql 命令的使用
-u 用户名
-p 密码
-S Socket文件
-h IP地址
-P 端口号
-e 免交互执行命令
< 导入SQL脚本
IP地址连接串 (tcpip连接方法)
IP Port user passwd
mysql -u用户 -p密码 -h地址 -P端口
前提:
[root@db01 data]# mysql -uoldboy -p123 -h10.0.0.51 -P3306
[root@db01 data]# mysql -uoldboy -p123 -h10.0.0.51