2、MySQL安装

MySQL的4大版本

此外,官方还提供了 **MySQL Workbench (GUITOOL)**一款专为MySQL设计的 图形界面管理工具 。MySQLWorkbench又分为两个版本,分别是 社区版 (MySQL Workbench OSS)、 商用版 (MySQLWorkbenchSE)。

Windows安装

下载

官网: https://www.mysql.com

1、打开官网,点击DOWNLOADS

2、然后,点击 MySQL Community(GPL) Downloads

image-20220308163111515

3、点击 MySQL Community Server

image-20220308163215959

4、在General Availability(GA) Releases中选择适合的版本

image-20220308163310250

5、Windows下的MySQL8.0安装有两种安装程序

如果安装MySQL5.7版本的话,选择 Archives ,接着选择MySQL5.7的相应版本即可。这里下载最近期的MySQL5.7.34版本。

image-20220308163422419

安装

步骤1:双击下载的mysql-installer-community-8.0.26.0.msi文件,打开安装向导。

步骤2:打开“Choosing a Setup Type”(选择安装类型)窗口,在其中列出了5种安装类型,分别是Developer Default(默认安装类型)、Server only(仅作为服务器)、Client only(仅作为客户端)、Full(完全安装)、Custom(自定义安装)。这里选择“Custom(自定义安装)”类型按钮,单击“Next(下一步)”按钮。

image-20220308163617919

步骤3:打开“Select Products” (选择产品)窗口,可以定制需要安装的产品清单。例如,选择“MySQLServer 8.0.26-X64”后,单击“→”添加按钮,即可选择安装MySQL服务器,如图所示。采用通用的方法,可以添加其他你需要安装的产品。

image-20220308163658868

此时如果直接“Next”(下一步),则产品的安装路径是默认的。如果想要自定义安装目录,则可以选中对应的产品,然后在下面会出现“Advanced Options”(高级选项)的超链接。

image-20220308163739658

单击“Advanced Options”(高级选项)则会弹出安装目录的选择窗口,如图所示,此时你可以分别设置MySQL的服务程序安装目录和数据存储目录。如果不设置,默认分别在C盘的Program Files目录和ProgramData目录(这是一个隐藏目录)。如果自定义安装目录,请避免“中文”目录。另外,建议服务目录和数据目录分开存放

image-20220308163842875

步骤4:在上一步选择好要安装的产品之后,单击“Next”(下一步)进入确认窗口,如图所示。单击“Execute”(执行)按钮开始安装。

image-20220308163904770

步骤5:安装完成后在“Status”(状态)列表下将显示“Complete”(安装完成),如图所示。

image-20220308163913509

安装失败问题

无法打开MySQL8.0软件安装包或者安装过程中失败,如何解决?

在运行MySQL8.0软件安装包之前,用户需要确保系统中已经安装了.Net Framework相关软件,如果缺少此软件,将不能正常地安装MySQL8.0软件。

解决方案:到这个地址 https://www.microsoft.com/en-us/download/details.aspx?id=42642 下载Microsoft .NET Framework 4.5并安装后,再去安装MySQL。

另外,还要确保Windows Installer正常安装。windows上安装mysql8.0需要操作系统提前已安装好Microsoft Visual C++ 2015-2019,下载地址 https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0 。

配置

MySQL安装之后,需要对服务器进行配置。具体的配置步骤如下。

步骤1:在上一个小节的最后一步,单击“Next”(下一步)按钮,就可以进入产品配置窗口。

image-20220308164032160

步骤2:单击“Next”(下一步)按钮,进入MySQL服务器类型配置窗口,如图所示。端口号一般选择默认端口号3306。

image-20220308164107125

其中,“Config Type”选项用于设置服务器的类型。单击该选项右侧的下三角按钮,即可查看3个选项,如图所示。

image-20220308164123141

步骤3:单击“Next”(下一步)按钮,打开设置授权方式窗口。其中,上面的选项是MySQL8.0提供的新的授权方式,采用SHA256基础的密码加密方法;下面的选项是传统授权方法(保留5.x版本兼容性)。

image-20220308164331821

步骤4:单击“Next”(下一步)按钮,打开设置服务器root超级管理员的密码窗口,如图所示,需要输入两次同样的登录密码。也可以通过“Add User”添加其他用户,添加其他用户时,需要指定用户名、允许该用户名在哪台/哪些主机上登录,还可以指定用户角色等。

image-20220308164419170

步骤5:单击“Next”(下一步)按钮,打开设置服务器名称窗口,如图所示。该服务名会出现在Windows服务列表中,也可以在命令行窗口中使用该服务名进行启动和停止服务。这里将服务名设置为“MySQL80”。如果希望开机自启动服务,也可以勾选“Start the MySQL Server at System Startup”选项(推荐)。

下面是选择以什么方式运行服务?可以选择“Standard System Account”(标准系统用户)或者“Custom User”(自定义用户)中的一个。这里推荐前者。

image-20220308164551061

步骤6:单击“Next”(下一步)按钮,打开确认设置服务器窗口,单击“Execute”(执行)按钮。

image-20220308164614592

步骤7:完成配置,如图所示。单击“Finish”(完成)按钮,即可完成服务器的配置。

image-20220308164624440

步骤8:如果还有其他产品需要配置,可以选择其他产品,然后继续配置。如果没有,直接选择“Next”(下一步),直接完成整个安装和配置过程。

image-20220308164643339

步骤9:结束安装和配置。

image-20220308164654125

Linux离线安装

#解压tar
tar -xf mysql-8.0.28-1.el8.x86_64.rpm-bundle.tar

#删除自带库
rpm -qa | grep mariadb

rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

#按顺序安装
common→libs→client→server

#必须安装(注意顺序)
rpm -ivh mysql-community-common-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.13-1.el7.x86_64.rpm
#非必要安装(注意顺序)
rpm -ivh mysql-community-libs-compat-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-test-8.0.13-1.el7.x86_64.rpm

#启动
systemctl start mysqld
service mysqld status

#查看默认密码
cat /var/log/mysqld.log  | grep password

#设置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
#如果出现密码安全性限制Your password does not satisfy the current policy requirements.
set global validate_password_policy=LOW;
set global validate_password_length=6;
#mysql8 以上版本变量名称有所改变
set global validate_password.policy=LOW;
set global validate_password.length=6;

#给防火墙加白名单,放开3306端口或者关闭防火墙。
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#设置远程访问权限
update mysql.user set host='%' where user='root';

flush privileges;

迁移data目录

#停止mysql(切记)
systemctl stop mysqld

#例:复制/var/lib/mysql目录下的所有内容到/home/mysql/data下
cp -fa  /var/lib/mysql/* /home/mysql/data/

chown -R  mysql:mysql /home/mysql/

#改名原来的目录备份,防止移动失败
cd /var/lib/
mv mysql mysql_bak

#修改配置文件/etc/my.cnf,修改后内容
[mysqld]
datadir=/home/mysql/data
socket=/home/mysql/data/mysql.sock
[mysql]
socket=/home/mysql/data/mysql.sock

#重启
systemctl start mysqld

MySQL的环境变量

如果不配置MySQL环境变量,就不能在命令行直接输入MySQL登录命令。

将MySQL安装目录下bin目录配置到path

查看MySQL版本

mysql -V
mysql --version
#在mysql命令行中
select version();

命令行登录MySQL

mysql -h 主机名 -P 端口号 -u 用户名 -p密码
#-h如果不写默认为localhost
#-P如果不写默认3306
#一般-p不写,在下一行输入密码

image-20220308165553360

查看所有数据库

show databases;

默认数据库

information_schema:是 MySQL 系统自带的数据库,主要保存 MySQL 数据库服务器的系统信息,比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件 所在的文件夹和系统使用的文件夹,等等

performance_schema:是 MySQL 系统自带的数据库,可以用来监控 MySQL 的各类性能指标。

sys:数据库是 MySQL 系统自带的数据库,主要作用是以一种更容易被理解的方式展示 MySQL 数据库服务器的各类性能指标,帮助系统管理员和开发人员监控 MySQL 的技术性能。

mysql:数据库保存了 MySQL 数据库服务器运行时需要的系统信息,比如数据文件夹、当前使用的字符集、约束检查信息,等等

字符集编码

如果出现MySQL中文属性乱码,那么需要设置字符集编码

查看字符集编码

show variables like 'character_%';
show variables like 'collation_%';

修改mysql的数据目录下的my.ini配置文件

[mysql] #大概在63行左右,在其下添加
default-character-set=utf8 #默认字符集
[mysqld] # 大概在76行左右,在其下添加
character-set-server=utf8
collation-server=utf8_general_ci

图形化界面

MySQL Workbench

MySQL官方提供的图形化管理工具MySQL Workbench完全支持MySQL 5.0以上的版本。MySQL Workbench分为社区版和商业版,社区版完全免费,而商业版则是按年收费。

MySQL Workbench 为数据库管理员、程序开发者和系统规划师提供可视化设计、模型建立、以及数据库管理功能。它包含了用于创建复杂的数据建模ER模型,正向和逆向数据库工程,也可以用于执行通常需要花费大量时间的、难以变更和管理的文档任务。

下载地址: http://dev.mysql.com/downloads/workbench/ 。

Navicat

Navicat MySQL是一个强大的MySQL数据库服务器管理和开发工具。它可以与任何3.21或以上版本的MySQL一起工作,支持触发器、存储过程、函数、事件、视图、管理用户等,对于新手来说易学易用。其精心设计的图形用户界面(GUI)可以让用户用一种安全简便的方式来快速方便地创建、组织、访问和共享信息。Navicat支持中文,有免费版本提供。

下载地址: http://www.navicat.com/ 。

SQLyog

SQLyog 是业界著名的 Webyog 公司出品的一款简洁高效、功能强大的图形化 MySQL 数据库管理工具。这款工具是使用C++语言开发的。该工具可以方便地创建数据库、表、视图和索引等,还可以方便地进行插入、更新和删除等操作,同时可以方便地进行数据库、数据表的备份和还原。该工具不仅可以通过SQL文件进行大量文件的导入和导出,还可以导入和导出XML、HTML和CSV等多种格式的数据。

下载地址: http://www.webyog.com/。

dbeaver

DBeaver是一个通用的数据库管理工具和 SQL 客户端,支持所有流行的数据库:MySQL、PostgreSQL、SQLite、Oracle、DB2、SQL Server、 Sybase、MS Access、Teradata、 Firebird、Apache Hive、Phoenix、Presto等。DBeaver比大多数的SQL管理工具要轻量,而且支持中文界面。DBeaver社区版作为一个免费开源的产品,和其他类似的软件相比,在功能和易用性上都毫不逊色。

唯一需要注意是 DBeaver 是用Java编程语言开发的,所以需要拥有 JDK(Java Development ToolKit)环境。如果电脑上没有JDK,在选择安装DBeaver组件时,勾选“Include Java”即可。

下载地址: https://dbeaver.io/download/

MySQL目录结构

MySQL的目录结构 说明
bin目录 所有MySQL的可执行文件。如:mysql.exe
MySQLInstanceConfig.exe 数据库的配置向导,在安装时出现的内容
data目录 系统数据库所在的目录
my.ini文件 MySQL的主要配置文件
C:\ProgramData\MySQL\MySQL Server 8.0\data\ 用户创建的数据库所在的目录,默认在这个目录

常见问题解决

图形化界面连接报错

有些图形界面工具,特别是旧版本的图形界面工具,在连接MySQL8时出现Authentication plugin 'caching_sha2_password' cannot be loaded错误。

出现这个原因是MySQL8之前的版本中加密规则是mysql_native_password,而在MySQL8之后,加密规则是caching_sha2_password。解决问题方法有两种,第一种是升级图形界面工具版本,第二种是把MySQL8用户登录密码加密规则还原成mysql_native_password。

#使用mysql数据库
USE mysql;
#修改'root'@'localhost'用户的密码规则和密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
#刷新权限
FLUSH PRIVILEGES;

root用户密码忘记,重置的操作

1: 通过任务管理器或者服务管理,关掉mysqld(服务进程)

2: 通过命令行+特殊参数开启mysqld

mysqld --defaults-file="D:\ProgramFiles\mysql\MySQLServer5.7Data\my.ini" --skip-grant-tables

3: 此时,mysqld服务进程已经打开。并且不需要权限检查

4: mysql -uroot 无密码登陆服务器。另启动一个客户端进行

5: 修改权限表

use mysql;
update user set authentication_string=password('新密码') where user='root'; 
flush privileges; 

6: 通过任务管理器,关掉mysqld服务进程。

7: 再次通过服务管理,打开mysql服务。

8: 即可用修改后的新密码登陆。

命令行客户端中文乱码

SHOW VARIABLES LIKE 'character_set_%';
#设置为windows默认的gbk
SET NAMES GBK;

修改已存在表或库的字符集编码

如果是在修改my.ini之前建的库和表,那么库和表的编码还是原来的Latin1,要么删了重建,要么使用alter语句修改编码。

#查看表的建表信息
show create table student;
#修改表的
alter table student charset utf8;
#查看库的建库信息
show create database school;
#修改库的字符集编码
alter database school charset utf8;

忽略大小写

1表示忽略大小写,0表示不忽略大小写。修改后需要重启MySQL服务。

[mysqld]
lower_case_table_names=1

注意:MYSQL8如果初始化后再添加该配置,8启动会报Different lower_case_table_names settings for server ('1') and data dictionary ('0').,需要彻底卸载mysql后,重新安装,在启动前,将该配置完成

datetime字段默认值错误

mysql5.7后时间字段出现问题,MySQL5.7.27中datetime字段默认值设置为0000-00-00 00:00:00会出现异常Invalid default value for 'comment_date'

[mysqld]
#实际是去除NO_ZERO_IN_DATE,NO_ZERO_DATE
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

设置数据库默认时区

[mysqld]
default-time-zone = '+08:00'

通过data目录恢复mysql

# 1、提取data目录中如下文件以及自己的数据库目录
auto.cnf
ib_buffer_pool
ib_logfile0
ib_logfile1
ibdata1
mysql.ibd
# 2、覆盖到同版本数据库的datadir

卸载mysql

# 查找mysql的包
rpm -qa | grep mysql
# 依次删除
rpm -e --nodeps
# 删除目录
rm -rf /var/lib/mysql/