MySQL-安装配置
MySQL-安装配置
学习核心
- SQL命令
- 字段和表结构设计
- 多表查询
- SQL刷题
学习资料
MySQL核心基础
MySQL核心概念
MySQL 是一个小型的开源的关系型数据库管理系统。与其他大型数据库管理系统例如 Oracle、DB2、SQL Server 等相比,MySQL 规模小,功能有限,但是它体积小、速度快、成本低,且它提供的功能对稍微复杂的应用已经够用,这些特性使得 MySQL 成为世界上最受欢迎的开放源代码数据库。
MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL 数据库系统使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。
由于 MySQL 是开放源代码的,因此任何人都可以在 General Public License 的许可下下载并根据个性化的需要对其进行修改。MySQL 因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL 是管理内容最好的选择
MySQL版本
针对不同的用户,MySQL 分为两个不同的版本:
- MySQL 社区版:该版本完全免费,但是官方不提供技术支持。用户可以自由下载使用。
- MySQL 企业版服务器:为企业提供数据库应用,支持 ACID 事务处理,提供完整的提交、回滚、崩溃恢复和行政锁定功能。需要付费使用,官方提供技术支持。
对绝大多数应用而言,MySQL 社区版都能满足:
MySQL 可以在 UNIX、Linux、Windows 等各种平台上运行。并且不管是服务器还是桌面版本的 PC,都可以安装 MySQL,并且 MySQL 在各个平台都很可靠且速度快。
如果是开发网站或 Web 应用程序,MySQL 是一个不错的选择。MySQL 是 LAMP 堆栈的重要组件。 LAMP 网站架构是目前国际流行的 Web 框架, 其中包括 Linux、Apache、MySQL 和 PHP。
MySQL安装配置
MySQL安装配置
进入MySQL官方下载 选择合适版本下载,选择安装类型(一般学习可选择全量安装,进一步了解MySQL相关组件学习)
版本选择:5.7.44、8.0.37,MySQL 8.x版本相较于5.x版本在性能、安全性、自适应性能力以及功能等方面都有了很大的提升,在语法、数据类型、参数传递、存储引擎等方面有了相应的改进
此处以V8.0.37-windows为例,了解MySQL版本新特性的应用和改进优化
【1】选择安装类型
- Developer Default:默认的安装选项。安装开发应用程序所需的组件,例如 MySQL 服务器、MySQL Shell、MySQL 连接器等
- Server Only:只安装 MySQL 服务器端,不包含命令行工具等组件
- Client Only:只安装 MySQL 客户端工具等组件,不包含 MySQL Server
- Full:安装 MySQL 服务器及其所有组件
- Custom:自定义安装自己所需的组件
【2】检查所需组件
在安装开始之前,安装程序会检查安装所需的先决条件。如果有Execute按钮,则先执行Execute(安装所需组件),随后再执行Next(点击Next,如果程序提出警告,直接点击Yes进入下一步)
【3】安装所选产品组件
在安装界面上,可以看到将要安装的 MySQL 产品/软件的列表。查看列表并单击 “Execute“,待安装程序自动下载所有产品/软件,安装完成则点击Next进入配置页面。
【4】产品配置
在产品配置界面可看到需要配置的产品列表,点击Next进入下一步
4.1 配置高可用性
在高可用性界面上,选择 “Standalone MySql Server / Classic MySQL Replication”:选择服务器作为独立服务器或者经典的 MySQL 复制服务器
4.2 配置服务器类型和网络
- Config Type: 配置类型
- Development Computer: 开发计算机(占用最少的资源)
- Server Computer: 服务器计算机,可以和其他服务器软件一同安装,如 web 服务器等(中等资源占用)
- Dedicated Computer: 专用计算机(可最大限度的占用资源)
- Connectivity:控制客户端如何连接到 MySQL 数据库
4.3 配置认证方法
在 MySQL 8.0 版本中,可以使用基于 SHA256 的强密码。在 Authentication Method 界面上,选择使用传统身份验证方法或强密码进行身份验证的选项。
注意:如果使用强密码加密进行身份验证,请确保所有客户端或者连接器必须更新到最新版本
4.4 配置账户和角色
配置Root账号密码(可自行选择配置:123456),也可选择添加用户账号
4.5 配置Windows服务
在Windows 服务界面上,可以将 MySQL 服务器配置为作为 Windows 服务运行,可以自定义服务器的名称以及是否随机自启动服务
4.6 将配置生效
在 “Apply Configuration” 界面上,可以看到保存配置的步骤。检查所有配置设置后,单击 “Execute”,等待执行完成点击Finish完成,继续点击Next进入下一步
【5】安装示例数据库
完成上面的步骤后,如果安装开始选择是完整安装类型,则安装程序继续回到产品配置界面。点击 Next,MySQL 安装程序将继续安装示例数据库
输入用户名密码,点击Check检查连接是否成功
点击Execute执行,等待安装完成后点击Finish完成
安装程序继续到产品配置界面。在此界面上,可以看到 MySQL Server 8.0.21 和 Sample 和 Example 8.0.19 的安装已成功完成,点击Next继续进入下一步
安装完成之后,可以将安装日志复制到剪切板供日后查看。如果想立刻学习,则可勾选下面两个内容,随后点击Finish,随后会弹出弹框
【6】MySQL数据库连接测试
安装完 MySQL 服务器之后,可以通过 MySQL 命令行工具或者其他 MySQL 客户端程序(比如:MySQL Workbench, Navicat 等) 连接到 MySQL 服务器。更详细的介绍请跳转到连接到 MySQL 服务器教程
MySQL数据库中默认导入了world、sakila数据库可供学习
world
数据库是一个包含了世界国家和城市的数据sakila
数据库是关于 DVD(电影)租赁店业务的数据库
MySQL客户端连接
1.MySQL命令行客户端
首先检查MySQL服务是否正常开启,windows下查看启动服务,确认服务是否正常运行
打开CMD命令行窗口,进入到MySQL服务器的bin目录(默认安装目录:C:\Program Files\MySQL\MySQL Server 8.0\bin
)
# 1.登录mysql数据库,输入密码
mysql -u root -p
123456
# 2.登录成功,查看所有数据库信息
show databases;
2.MySQL Workbench
启动MySQL Workbench工作台,选择连接数据库
配置完成,进入查看数据库信息
3.Navicat
此处需注意客户端的版本要和服务端的版本匹配,否则一些访问校验不通过,参考连接测试失败提示信息如下(例如此处MySQL服务安装配置过程中选择使用了8.0版本的强校验,需要相应升级客户端版本):MySQL8之前版本加密规则为mysql_native_password
,MySQL8之后版本加密规则为caching_sha2_password
1251 - Client does not support authentication protocol requested by server; consider upgrading MysOL client
针对上述问题,解决方案有两种:
- 方案1:升级Navicat驱动
- 方案2:将MySQL用户登陆密码加密规则还原成MySQL8之前的版本校验
排查步骤:
# 查看用户信息(host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码)
select host,user,plugin,authentication_string from mysql.user;
// output
host user plugin authentication_string
localhost mysql.infoschema caching_sha2_password $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost mysql.session caching_sha2_password $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost mysql.sys caching_sha2_password $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost root caching_sha2_password $A$005$j|o'"4g;z [n,f,w0Epf0z61/R0l.vlsYST6yG64t.d0PLcw0IqTaahaqAQO6
此处选择方案2调整校验规则,参考命令如下:(更新完成后再次执行查看用户信息详情,确认校验规则是否修改成功)
# 更新user为root,host为% 的密码为123456
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 更新user为root,host为localhost 的密码为123456
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 更新完成,刷新权限
FLUSH PRIVILEGES;
更改完成,在Navicat中再次执行连接测试,确认连接是否成功即可
MySQL数据库管理
MySQL 进程的启动和停止
# Windows:服务管理中启动、关闭MySQL进程
# Linux:通过指令控制MySQL进程
sudo service mysqld start
sudo service mysqld stop
sudo service mysqld restart
# Linux:如果使用systemd命令管理服务器,可以使用下面的命令控制
sudo systemd start mysqld
sudo systemd stop mysqld
sudo systemd restart mysqld
# MAC:如果通过brew安装MySQL,则通过brew控制
brew services list
brew services restart mysql@5.7
brew services start mysql@5.7
brew services stop mysql@5.7
MySQL用户管理
# 创建用户(account_name由两部分组成:username、hostname,以@进行分割;其中hostname可选,如果省略则表示用户可以从任何主机连接)
CREATE USER [IF NOT EXISTS] account_name IDENTIFIED BY 'password';
# 如果account_name包含特殊字符(空格、-、等)则需要用''引用:'username'@'hostname'
# 1.创建noob用户
CREATE USER IF NOT EXISTS noob IDENTIFIED BY '123456';
# 2.查看当前MySQL服务器的用户信息
SELECT user FROM mysql.user; # 以root用户登录,查看当前MySQL服务器的用户信息
# 3.重命名用户
RENAME USER
user_account TO new_user_account
[, user_account2 TO new_user_account2]
[, ...];
# 4.修改密码(如果是MySQL5.7.6以后的版本取消了password,使用authentication_string替换password)
UPDATE user SET password = PASSWORD('Db123654') WHERE user = 'dbadmin' AND host = 'localhost'; # 更新密码(MySQL5.7.6以前版本)
UPDATE user SET authentication_string = PASSWORD('Db123654') WHERE user = 'dbadmin' AND host = 'localhost'; # 更新密码(MySQL5.7.6以后版本)
FLUSH PRIVILEGES;
# 5.锁定用户
SELECT user, host, account_locked FROM mysql.user; # 查看用户锁定状态
ALTER USER 'noob'@'%' ACCOUNT LOCK; # 根据账号锁定用户
SELECT user, host, account_locked FROM mysql.user WHERE user = 'sqliz' AND host = '%'; # 查询用户账户 'sqliz'@'%' 的锁定状态
SHOW GLOBAL STATUS LIKE 'Locked_connects'; # 查看当前 MySQL 数据库服务器上锁定用户尝试登录的次数
# 6.解锁用户
ALTER USER [IF EXISTS] user@host [, user@host, ...] ACCOUNT UNLOCK;
# 7.删除用户
DROP USER [IF EXISTS] account_name [,account_name2]...
# 8.授权
GRANT privilege_type [,privilege_type],.. ON privilege_object TO user_account;
GRANT ALL ON *.* TO noob@localhost; # 分配全局权限
GRANT ALL ON noob.* TO noob@localhost; # 分配数据库全部对象的全部权限
GRANT SELECT, INSERT ON noob.test_table TO noob@localhost; # 分配数据库中某个表的的查询和插入权限
# 9.撤销授权
REVOKE priv1 [, priv2 [, ...] ] ON [object_type] privilege_level FROM user1 [, user2 [, ...]];
REVOKE UPDATE, DELETE ON db.* FROM 'noob'@'%'; # 撤销用户noob在db数据库中的update和delete权限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'noob'@'%'; # 撤销用户noob的所有权限
# 10.显示权限
SHOW GRANTS; # 显示授予当前用户的权限
上述语句等价于 SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER();
注意:windows系统重装后需重新安装Navicat,否则提示缺少配置(删掉相关内容,直接重装Navicate即可)