跳至主要內容

MySQL-安装配置

holic-x...大约 10 分钟JAVAMySQL

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官方下载open in new window 选择合适版本下载,选择安装类型(一般学习可选择全量安装,进一步了解MySQL相关组件学习)

​ 版本选择:5.7.448.0.37,MySQL 8.x版本相较于5.x版本在性能、安全性、自适应性能力以及功能等方面都有了很大的提升,在语法、数据类型、参数传递、存储引擎等方面有了相应的改进

​ 此处以V8.0.37-windows为例,了解MySQL版本新特性的应用和改进优化

image-20240616120823528

【1】选择安装类型

  • Developer Default:默认的安装选项。安装开发应用程序所需的组件,例如 MySQL 服务器、MySQL Shell、MySQL 连接器等
  • Server Only:只安装 MySQL 服务器端,不包含命令行工具等组件
  • Client Only:只安装 MySQL 客户端工具等组件,不包含 MySQL Server
  • Full:安装 MySQL 服务器及其所有组件
  • Custom:自定义安装自己所需的组件

image-20240616122200228

【2】检查所需组件

​ 在安装开始之前,安装程序会检查安装所需的先决条件。如果有Execute按钮,则先执行Execute(安装所需组件),随后再执行Next(点击Next,如果程序提出警告,直接点击Yes进入下一步)

image-20240616122349562

【3】安装所选产品组件

​ 在安装界面上,可以看到将要安装的 MySQL 产品/软件的列表。查看列表并单击 “Execute“,待安装程序自动下载所有产品/软件,安装完成则点击Next进入配置页面。

image-20240616122927858

【4】产品配置

​ 在产品配置界面可看到需要配置的产品列表,点击Next进入下一步

image-20240616123222262

4.1 配置高可用性

​ 在高可用性界面上,选择 “Standalone MySql Server / Classic MySQL Replication”:选择服务器作为独立服务器或者经典的 MySQL 复制服务器

image-20240616123354391

4.2 配置服务器类型和网络

  • Config Type: 配置类型
    • Development Computer: 开发计算机(占用最少的资源)
    • Server Computer: 服务器计算机,可以和其他服务器软件一同安装,如 web 服务器等(中等资源占用)
    • Dedicated Computer: 专用计算机(可最大限度的占用资源)
  • Connectivity:控制客户端如何连接到 MySQL 数据库

image-20240616123947265

image-20240616124017903

4.3 配置认证方法

​ 在 MySQL 8.0 版本中,可以使用基于 SHA256 的强密码。在 Authentication Method 界面上,选择使用传统身份验证方法或强密码进行身份验证的选项。

​ 注意:如果使用强密码加密进行身份验证,请确保所有客户端或者连接器必须更新到最新版本

image-20240616124257819

4.4 配置账户和角色

​ 配置Root账号密码(可自行选择配置:123456),也可选择添加用户账号

image-20240616131252161

4.5 配置Windows服务

​ 在Windows 服务界面上,可以将 MySQL 服务器配置为作为 Windows 服务运行,可以自定义服务器的名称以及是否随机自启动服务

image-20240616131405297

4.6 将配置生效

​ 在 “Apply Configuration” 界面上,可以看到保存配置的步骤。检查所有配置设置后,单击 “Execute”,等待执行完成点击Finish完成,继续点击Next进入下一步

image-20240616131449257

image-20240616131626608

【5】安装示例数据库

​ 完成上面的步骤后,如果安装开始选择是完整安装类型,则安装程序继续回到产品配置界面。点击 Next,MySQL 安装程序将继续安装示例数据库

​ 输入用户名密码,点击Check检查连接是否成功

image-20240616131809383

​ 点击Execute执行,等待安装完成后点击Finish完成

image-20240616131917028

​ 安装程序继续到产品配置界面。在此界面上,可以看到 MySQL Server 8.0.21Sample 和 Example 8.0.19 的安装已成功完成,点击Next继续进入下一步

image-20240616132045677

​ 安装完成之后,可以将安装日志复制到剪切板供日后查看。如果想立刻学习,则可勾选下面两个内容,随后点击Finish,随后会弹出弹框

image-20240616132205069

image-20240616132732132

【6】MySQL数据库连接测试

​ 安装完 MySQL 服务器之后,可以通过 MySQL 命令行工具或者其他 MySQL 客户端程序(比如:MySQL Workbench, Navicat 等) 连接到 MySQL 服务器。更详细的介绍请跳转到连接到 MySQL 服务器open in new window教程

​ MySQL数据库中默认导入了world、sakila数据库可供学习

  • world 数据库是一个包含了世界国家和城市的数据
  • sakila 数据库是关于 DVD(电影)租赁店业务的数据库

image-20240616133008455

MySQL客户端连接

1.MySQL命令行客户端

​ 首先检查MySQL服务是否正常开启,windows下查看启动服务,确认服务是否正常运行

image-20240616134238835

​ 打开CMD命令行窗口,进入到MySQL服务器的bin目录(默认安装目录:C:\Program Files\MySQL\MySQL Server 8.0\bin

# 1.登录mysql数据库,输入密码
mysql -u root -p
123456
# 2.登录成功,查看所有数据库信息
show databases;

image-20240616134626037

2.MySQL Workbench

​ 启动MySQL Workbench工作台,选择连接数据库

image-20240616134853941image-20240616135055643

​ 配置完成,进入查看数据库信息

image-20240616135130309

3.Navicat

image-20240616135402557

​ 此处需注意客户端的版本要和服务端的版本匹配,否则一些访问校验不通过,参考连接测试失败提示信息如下(例如此处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中再次执行连接测试,确认连接是否成功即可

image-20240616141236840

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即可)

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3