在大数据的课程中,我们需要处理的数据来自不同的渠道,其中有一个很重要的渠道就是关系型数据库中存储的数据。在企业中,会把业务数据存储在关系型数据库中,一般以MySQL居多。另外,我们在后续的课程中需要学习Hive、SparkSQL、Flink SQL等内容,而这些内容共同的基础就是SQL语法。所以,我们需要借助MySQL学习SQL语法的使用,熟练的掌握基础的增删改查的操作与多表的查询操作,为后续的课程学习打好扎实的基础。
另外,在大数据的数据处理流程中,有时候我们需要将处理之后的数据导出给其他的业务场景使用,而导出业务数据最常用的,也是导出到MySQL数据库中,因此这部分的课程需要重点去学习!
第一章 数据库简介
1.1 数据库的简介
数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。
数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。
数据库:存储、维护和管理数据的集合。
1.2 数据库的分类
- 关系型数据库(sql)
- Oracle: 是Oracle公司的数据库产品
- Mysql: 最早属于瑞典的MysqlAB公司的,后被Sun公司收购,Sun在2009年4月20号被Oracle收购。
- SQLServer: 微软旗下的数据库产品
- Access: 微软旗下的数据库产品
- DB2: IBM公司旗下的数据库产品
- 非关系型数据库(nosql)
- HBase是一个分布式的、面向列的开源数据库
- MongoDB是一个基于分布式文件存储的数据库
- Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
第二章 数据库的安装与配置
2.1 安装: Windows版
界面操作 | 描述信息 |
---|---|
1. 接受条款,下一步,准备开始安装 | |
2. 选择Custom,自定义安装,Next | |
3. 以自己的操作系统为准,不过大多数都是64位的操作系统,按照图中的选择即可。 | |
4. 下一步 | |
5. 如果检测到了依赖的缺失,点击下方的Execute进行依赖的下载和安装,不要点击Next。 这里有点小BUG,这个自动的安装,只会安装64位的,实际上MySQL还依赖vcredist_x86,需要手动安装。 这里的界面不是必现的,如果没有依赖缺失,就看不到这样的界面,直接下一步即可 | |
6. 依赖安装完成,点击Next进行MySQL的安装 | |
7. 配置端口信息与防火墙信息。 注意:MySQL默认使用3306端口,如果这个端口被占用了,可以设置为其他的端口。但是,最优的选择是查找谁占用了3306端口,并修改其他的程序占用,最好保证3306端口是留给MySQL的。 | |
8. 选择默认即可 | |
9. 设置MySQL的root用户的密码 | |
10. 按照自己的需求选择即可。不推荐修改服务的名称。 | |
11. 选择Execute,安装即可。 | |
12. 安装、配置完全结束 | |
13. 直接下一步,完成! |
部分安装失败的原因
1.关闭防火墙
2.查看系统版本与mysql版本
3.检查配置是否正确
4.电脑老旧
5.尝试以管理员权限安装mysql
6.卸载完先关机重启
2.2 卸载: Windows版
卸载MySQL的时候需要注意,如果卸载的不彻底,会有部分的数据残留,导致下一次再安装MySQL的时候,会有安装不上的情况出现。
-
打开卸载程序
- 直接打开安装包,里面提供有卸载的功能
- 开始菜单搜索uninstall,找到MySQL
- 控制面板找到MySQL,右键卸载
-
卸载主程序
-
清除MySQL的数据
MySQL主程序卸载完成后,需要彻底清除MySQL的残留数据。在C盘的ProgramData中,删除MySQL的文件夹即可。
ProgramData是一个隐藏文件夹,需要显示隐藏才可以看到。
-
清除注册表信息
- Windows+R–>regedit–>打开注册表
- 根据路径打开并删除
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\MySQL
2.3 安装: Mac直装版
Mac上的dmg安装包,这里是不需要任何的配置的,直接一路下一步即可!
**注意:**在最后一步的时候,会弹出一个对话框,告诉你生成了一个临时的root用户的密码,使用这个密码登录到MySQL进行密码的修改即可。
2.4 卸载: Mac直装版
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
vim /etc/hostconfig (and removed the line MYSQLCOM=-YES-)
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
2.5 安装: Mac Homebrew版
操作界面 | 描述 |
---|---|
1. 搜索服务器,这个就是我们需要使用的mysql。 需要历史版本的,也可以使用指定的版本,例如: mysql@5.7 | |
2. brew install mysql安装mysql | |
3. 使用mysql_secure_installation进行密码的设置,完成。 安全级别为LOW的情况下,至少需要8位密码 |
2.6 卸载: Mac Homebrew版
# brew卸载MySQL
brew uninstall mysql
# 清除包残留
brew cleanup
# 清除其他残留
rm -rf /opt/homebrew/etc/my.cnf
rm -rf /opt/homebrew/var/mysql
# 安装包可以清理,也可以不清理
~/Library/Caches/Homebrew
2.7 启动、停止mysql服务
-
windows版本
-
此电脑 -> 右键 -> 管理 -> 服务 -> 找到MySQL80 -> 右键菜单
-
以管理员的身份运行命令行,使用命令完成操作
net start mysql80 // 开启服务 net stop mysql80 // 停止服务
-
-
Mac版本
-
直装版
左上角苹果logo -> 系统偏好设置 -> MySQL -> Start MySQL Server
-
Homebrew版
# 开启服务 brew services start mysql # 停止服务 brew services stop mysql # 查看服务 brew services list
-
2.8 登录到MySQL
在控制台使用mysql的命令,完成登录和sql的操作。注意,如果windows平台上,需要手动配置环境变量。
# 这种方式的登录,敲回车后需要输入密码
1. mysql -u root -p
# 将用户名和密码都写到指令中,注意:没有空格
2. mysql -uroot -p123456
2.9 修改密码
# 在MySQL中,密码有几个安全等级,默认的为密码需要同时包含字母、数字、下划线,且长度至少8位
# 查看当前的密码策略
show variables like 'validate_password%';
# 如果结果是一个Empty Set,说明没有加载安全策略组件
install component 'file://component_validate_password';
# 这种密码安全,但是在我们学习阶段比较麻烦,因此我们会修改为简单的密码
# 如果需要修改为简单的密码,可以按照如下过程操作
set global validate_password.policy=LOW;
set global validate_password.length=4;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;
在知道原来的密码的情况下,下面的方式可以修改数据库的密码:
- mysql> alter user root@localhost identified by‘新密码’;
- C:\Users\shawn> mysqladmin -uroot –p旧密码 password 新密码
2.10 遗忘密码的情况
windows版本
-
停止MySQL80服务
-
使用管理员身份打开终端,输入
./mysqld --shared-memory --skip-grant-tables
,跳过身份检查 -
打开一个新的窗口,使用mysql的命令登录
-
修改密码
mysql> flush privileges; mysql> alter user root@localhost identified by '123456';
-
退出所有的终端,重启MySQL服务即可
注意: 如果在上述第二步的时候出现如下错误
PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld.exe --shared-memory --skip-grant-tables [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.27) starting as process 8512 [Warning] [MY-010091] [Server] Can't create test file C:\Program Files\MySQL\MySQL Server 8.0\data\mysqld_tmp_file_case_insensitive_test.lower-test [Warning] [MY-010091] [Server] Can't create test file C:\Program Files\MySQL\MySQL Server 8.0\data\mysqld_tmp_file_case_insensitive_test.lower-test [ERROR] [MY-013276] [Server] Failed to set datadir to 'C:\Program Files\MySQL\MySQL Server 8.0\data\' (OS errno: 2 - No such file or directory) [ERROR] [MY-010119] [Server] Aborting [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.27) MySQL Community Server - GPL.
按照下面的方式操作即可:
- mysqld --initialize --user=mysql --console
- mysqld -install
- 如果出现
The service already exists
,执行sc delete mysql
windows平台简单版
-
停止MySQL的服务
-
在任意的路径下,新建一个文本文件,其中添加修改密码的操作
# 例如: # 在桌面上创建一个文件 root_password.txt # 其中的内容如下 alter user root@localhost identified by '12345678';
-
使用管理员身份运行命令提示符
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\Users\shawn\Desktop\root_password.txt"
-
回车运行之后,就可以ctrl+c停止了
-
启动MySQL的服务,用新的密码登录即可。
mac版本
-
停止mysql服务
-
打开my.cnf文件
文件位置:
dmg直装 -> /etc/my.cnf
homebrew ->
intel -> /usr/local/homebrew/etc/my.cnf
M1 -> /opt/homebrew/etc/my.cnf
-
在文件末尾添加一行
skip-grant-tables
-
不需要密码登录到MySQL,并修改密码
# 登录到MySQL mysql -uroot -p # 如果提示输入密码,直接回车即可 # 刷新权限 flush privileges; # 修改密码,密码要求同时包含大写字母、小写字母、数字,长度至少8位。 # 如果想要修改为简单的密码,看下一段 alter user 'root'@'localhost' identified by 'NewPassword123';
-
将服务停止
-
将my.cnf中,刚刚添加的一行跳过权限检查删除掉
-
启动MySQL服务
2.11 远程工具的使用
我们可以在控制台上进行sql的操作,但是操作的便利性会有很大的影响。实际上,很多时候我们进行的sql的操作都是在一些可视化的图形工具中完成的,这样开发的效率更高。这种工具有很多,在这里我们选择使用 Navicat。