数据库理论及MySQL下载与环境配置
数据库理论及MySQL下载
-----------------2023-2-27更新-----------------
5.7版本mysql下载
下载解压
下载好安装包后解压到合适的文件夹
新建my.ini配置文件
5.7版本的mysql默认没有配置文件和data文件夹,需要初始化手动创建:
[mysqld]
port = 3306
basedir=D:\MySQL\mysql-5.7.40-winx64
datadir=D:\MySQL\mysql-5.7.40-winx64/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
ps:注意根据自己的mysql路径确定basedir和datadir。
配置环境变量
参考老博客
启动mysqld服务
在管理员cmd中依次执行:
mysqld --initialize # 初始化data数据库
mysqld -install # 添加系统服务
net start mysql # 启动服务
连接数据库
在这些版本中,可能出现mysql客户端的root用空密码连接不上的情况,这时则需要跳过验证去修改密码,参考下文的老博客【忘记密码】小节。
-----------------老博客分割线-------------------
数据库发展
存取数据的发展
-
自定义文件,以各种各样的形式存储
-
软件开发目录规范的db文件夹
-
数据库服务:统一了存储路径和操作数据的方式
降低了学习成本,每个项目都可以用类似的操作处理数据
数据库软件发展
-
本地文件,如早期很多单机游戏和非网络应用
-
数据存储于网络
现在很多的软件采取的C/S架构和B/S架构,所有用户的数据都存储于服务端。
客户端通过请求服务端服务的方式操作数据。
明显的好处时,用户可以通过账号在不同的设备不同的地方访问这些数据。
-
数据库服务集群:为了确保所用用户的数据安全,数据库的内容都会备份。
数据库理论
数据库本质
- 站在底层原理的角度
数据库指的是操作数据的进程(一堆代码) - 站在实际应用的角度
数据库指的是可视化操作界面(一些软件)
一般描述数据库就是指数据库软件。
数据库也是C/S架构的程序,我们可以通过数据库的客户端输入指令来让数据库的服务端来服务,操作实际的数据。
数据库分类
关系型数据库
关系型数据库的特征是:
- 拥有固定的表结构(字段名 字段类型等)
- 表之间可以建立数据库层面的关系(不是通过代码层面,而是数据之间的关联)
关系型数据库 | 特点 |
---|---|
MySQL | 开源使用,使用面最广,功能均衡全面 |
Oracle | 收费,目前安全性最高,大企业爱用 |
PostgreSQL | 开源免费,支持二次开发,兼容性高 |
MariaDB | 和MySql是一个作者,依然开源免费 |
sqlite | 小型数据库,主要用于本地测试 |
除此以外,市面上还有很多数据库软件,如sql server、db2、access等。
非关系型数据库
非关系型数据库的特征是:
- 没有固定的表结构,采取键值对的方式存取数据
- 数据本身没有关系,要通过代码来编写数据之间的逻辑关系
非关系型数据库 | 特点 |
---|---|
redis | 使用频率最高的非关系型数据库,是一种缓存数据库 |
MongoDB | 文档型数据库,主要用于爬虫和大数据领域(最像关系型的非关系型数据库) |
memcache | 已经被redis逐渐淘汰,因为redis很多功能它没有 |
虽然数据库软件很多,但是所有热门的数据库操作数据的方式都十分相似,其中MySQL最为典型。
MySQL下载
最新的版本已经到8.x了,越新的版本学习成本越低,本文安装的MySql版本是5.6版本。
下载流程
MySQL官网:https://www.mysql.com/
各种版本的下载地址:https://downloads.mysql.com/archives/community/
-
选择版本下载压缩包
-
将压缩包解压并放到一个合适的文件夹
-
查看目录
安装完成。
MySQL启动
-
将bin文件夹添加到系统环境变量
-
用管理员cmd命令行启动mysqld
> mysqld # 如果添加过环境变量则可以直接启动mysqld
-
mysqld所在窗口不要动,再开个cmd到下开mysql,有两种开启模式,如图
这样我们就可以通过mysql输入命令来操作我们的数据了(主要就是对data文件夹的操作)
系统服务制作
每次都需要手动开一个进程mysqld太麻烦了,我们可以让mysqld设置为系统的后台服务并开机自动开启。(进行以下操作时记得先清理之前开启的mysql服务端和客户端)
-
将mysql添加到系统服务中
查看系统服务的方式:运行窗口输入
services.msc
将程序添加到系统服务:管理员cmd输入
mysqld --install
-
首次添加需要手动启动一下
可以右击上图的MySQL启动
也可以用命令行启动:
net start mysqld
了解:卸载MySQL
1.先关闭服务端
net stop mysql
2.移除系统服务
mysqld --remove
修改mysql登录密码
-
mysqladmin -u用户名 -p原密码 password 新密码
上述形式是明文的密码形式,也可以不直接跟明文,那么程序会要求密文输入
这里原本没有原密码所以直接回车输新密码。
-
管理员root账号登录后直接修改存储用户数据的表
mysql.user
(需要用到mysql语句)
忘记密码
除了卸载重装(不推荐)外还可以通过跳过授权表的方式打开数据库。
-
关闭运行的服务端:
net stop mysql
-
以跳过授权表的方式重新启动mysqld服务端:
mysqld --skip-grant-tables
-
管理员身份登录:
mysql -uroot -p
-
直接修改密码:(修改mysql库下的user表的root的密码)
update mysql.user set password=password('123') where Host='localhost' and User='root';
字符编码与配置文件
\s
查看MySQL相关信息
可以看见当前用户、版本、编码、端口号
其中字符编码有四栏,可以看见字符编码并不统一,除了Db characterset是我自己设置的,
其他都是MySQL5.6及之前的版本默认的字符编码,这已经不适用于我们现在的字符编码需求。
不过之后的版本都不需要我们再手动配置,默认都是utf家族的编码格式。
如果想要永久修改编码配置,需要操作配置文件。
默认的配置文件是my-default.ini
打开这个文件,它内部有很多的注释和一段简单的配置文件。
配置的文件说明中提到如果想要修改和添加配置,不要在这个文件中直接改动,而需要重新写一个文件my.ini
放到同一级目录下,这个文件中写入我们的新配置。
而关于字符编码的配置拷贝下述配置即可。
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
ps:
1.utf8mb4能够存储表情,功能更强大。
2.utf8与utf-8是有区别的,MySQL中只有utf8。
修改了配置文件中关于[mysqld]的配置,需要重启服务端。
因为只有在mysqld启动时,程序才会加载这些配置。
net stop mysql
net start mysql
修改后再用\s
查看配置可以看见默认字符编码的改动已经生效了。
修改配置后可能出现的问题
我们是通过写了my.ini
文件放在同级目录下的方式覆盖了my_default.ini
的配置。
而原本的默认配置文件中是有一条mysqld的配置是原本生效的。
所以要记得把这一条配置给加上:sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
最后my.ini
中加入原有配置和新的字符编码配置应该是下图这样: