Skip to content

MySQL 的版本

版本分类

MySQL 服务端提供了以下版本:

  • MySQL Community Server:社区版本,免费,但是MySQL不提供官方技术支持。
  • MySQL Enterprise Edition:商业版,该版本是收费版本,可以试用30天,官方提供技术支持
  • MySQL Cluster:集群版,开源免费,可将几个MySQL Server封装成一个Server。
  • MySQL Cluster CGE:高级集群版,需付费。

MySQL 的图形化客户端 MySQL Workbench(GUI TOOL):一款专为MySQL设计的ER/数据库建模工具。又分为两个版本:

  • 社区版(MySQL Workbench OSS)
  • 商用版(MySQL Workbench SE)

版本号

MySQL的命名机制使用由3个数字和一个后缀组成的版本号。例如,mysql-8.0.26的版本号的含义如下:

  • 第1个数字(8)是主版本号,描述了文件格式。所有版本5的发行都有相同的文件格式。
  • 第2个数字(0)是发行级别。主版本号和发行级别组合到一起便构成了发行序列号。
  • 第3个数字(26)是在此发行系列的版本号,随每个新分发版递增。

目前,MySQL的最新版本为MySQL 8.0。

查询当前 MySQL 的版本

使用 MySQL 客户端登陆后,输入 select version(); 命令,即可查询当前 mysql 的版本号

sql
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.30    |
+-----------+
1 row in set (0.02 sec)

MySQL目录结构

Linux版本(待补充)

[!todo] 补充中...

windows版本

  • bin:存放可执行文件,比如MySQL.exe
  • data:存储的是MySQL默认的数据库
  • include:存放的C语言的头文件
  • lib:存放的C++的动态链接库
  • my.ini:数据库的配置文件

启动 MySQL 服务器程序的相关可执行文件

启动 MySOL 服务器程序的可执行文件有很多,大多在 MySQL 安装目录的 bin 目录下。

mysqld(不常用)

  • mysqld 这个可执行文件就代表着 MySOL 服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。

mysqld_safe

  • mysqld_safe是一个启动脚本,它会间接的调用mysqld,而且还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助重启它。
  • 除外,使用mysqld_safe启动服务器程序时,它会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志,方便找出发生错误的原因。

mysql.server

mysql.server也是一个启动脚本,它会间接的调用mysqld_safe。需要注意的是,这个mysql.server文件其实是一个链接文件,它的实际文件位置是support-files/mysql.server,所以如果在 bin 目录找不到,则到support-files去找,也可以自行用 ln 命令在 bin 创建一个链接。

在调用mysql.server时在后边指定start参数就可以启动服务器程序;如指定stop参数则关闭正在运行的服务器程序。

bash
# 开启MySQL服务
mysql.server start
# 关闭MySQL服务
mysql.server stop

mysqld_multi

mysqld_multi可以一台计算机上也可以运行多个服务器实例(即运行了多个MySQL服务器进程)。此可执行文件可以对每一个服务器进程的启动或停止进行监控。

Linux 系统安装MySQL

下载 Linux 安装包

下载地址:https://dev.mysql.com/downloads/mysql/

安装 MySQL

  1. 卸载 centos 中预安装的 mysql
bash
rpm -qa | grep -i mysql
rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
  1. 上传 mysql 的安装包
alt + p --> put  E:/test/MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
  1. 解压 mysql 的安装包
bash
mkdir mysql
tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C /root/mysql
  1. 安装依赖包
bash
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6 libncurses.so.5 --setopt=protected_multilib=false
yum  update libstdc++-4.4.7-4.el6.x86_64
  1. 安装 mysql-client
bash
rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm
  1. 安装 mysql-server
bash
rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm

启动/停止 MySQL 服务

bash
service mysql start

service mysql stop

service mysql status

service mysql restart

登录 MySQL

mysql 安装完成之后, 会自动生成一个随机的密码, 并且保存在一个密码文件中:/root/.mysql_secret

bash
mysql -u root -p

登录之后,修改密码:

bash
set password = password('123456');

进入mysql,授权远程访问:

bash
grant all privileges on *.* to 'root' @'%' identified by '123456';
flush privileges;

如果此时使用SSH软件还是无法远程连接mysql数据库,可能就是linux系统的防火墙导致的,所以需要设置关闭防火墙

bash
# 查询看防火墙状态
service iptables status

# 关闭防火墙(全部、暴力)
service iptables stop

CentOS 7.4 安装与配置MySql 5.7.21(项目B安装)

环境

  • 系统环境:centos-7.4 64位
  • 安装方式:rpm安装
  • 软件:mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
  • 描述:上述的tar包中已经包含需要安装的rpm,所以只需要将其放置到系统中使用tar命令解包即可。
  • Mysql的下载地址http://dev.mysql.com/downloads/mysql/

系统原mariadb版本

bash
# 查看MySql与mariadb安装情况
# grep -i是不分大小写字符查询,只要含有mysql就显示
rpm -qa | grep -i mysql
rpm -qa | grep mariadb

# 卸载mariadb(会与mysql冲突)
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

安装新MySQL

使用winSCP将下载的“mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar”传到虚拟机系统的/root目录下:

在终端上进入/root目录;解包.tar

bash
# 对” mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar”解包,不是压缩文件不需要解压缩
tar -xvf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar

执行如下安装命令:

bash
# 1、安装 mysql-community-common
rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm

# 2、安装 mysql-community-libs
rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm

# 3、安装 mysql-community-client
rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm

# 4、安装 mysql-community-server
yum -y install perl
rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm

# 5、安装 mysql-community-devel
rpm -ivh mysql-community-devel-5.7.21-1.el7.x86_64.rpm

安装完成。MySql默认安装文件位置:

/var/lib/mysql/    # 数据库目录
/usr/share/mysql   # 配置文件目录
/usr/bin           # 相关命令目录
/etc/my.cnf        # 核心配置文件

配置MySQL

启动mysql

bash
#启动mysql
service mysqld start
#重启mysql
service mysqld restart
#停止mysql
service mysqld stop
#查看mysql状态
service mysqld status

# 设置开机启动Mysql
systemctl enable mysqld

# 设置开机不启动Mysql
systemctl disable mysqld

修改root密码

MySQL安装成功后,会生成一个临时密码,第一次登录需要输入这个密码,所以查看该临时密码,然后修改密码。

bash
# 查看临时密码(/var/log/mysqld.log)
grep password /var/log/mysqld.log

# 使用root登录
mysql –uroot –p

# 然后输入/var/log/mysqld.log文件中的临时密码。登录后;修改密码为Root_123
set password = password('Root_123');

注意:密码必须包含大小写字母、数字、特殊符号

在 mysql 内置密码校验器,用于校验用户设置的密码复杂度。使用以下命令可以查看密码校验的规则:

sql
mysql> SHOW VARIABLES LIKE 'validate_password.%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

通过以下命令,降低密码的校验规则

bash
set global validate_password.policy = 0;
set global validate_password.length = 4;

设置简单的密码

sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

Notes: 官方文档地址:https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html

设置允许远程访问

因为 root 用户默认的主机是 localhost,为了可以远程访问 mysql 服务,需要将 root 用户的主机地址修改为 *。(或者创建主机地址为 * 的其他用户

bash
#登录,密码为新修改的密码Root_123
mysql -uroot –p

#设置远程访问(使用root密码):
mysql> grant all privileges on  *.*  to  'root' @'%'  identified by 'Root_123'; 
mysql> flush privileges;

设置3306端口可以被访问

bash
# 退出mysql,防火墙中打开3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

参数说明:

  • –zone:作用域
  • -–add-port=3306/tcp:添加端口,格式为:端口/通讯协议
  • -–permanent:永久生效,没有此参数重启后失效
bash
# 重启防火墙
firewall-cmd --reload
# 查看已经开放的端口
firewall-cmd --list-ports

# 停止防火墙
systemctl stop firewalld.service
# 启动防火墙
systemctl start firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service

MySQl 安装(Windows 免安装版)

解压与创建配置文件

  • 将MySQL软件包解压在没有中文和空格的目录下
  • 在解压目录创建my.ini文件并添加内容如下:

配置环境变量

  • 在【我的电脑】右键 -> 选择【高级系统设置】 -> 选择【高级】 -> 【环境变量】。设置环境变量将【MYSQL_HOME】添加到PATH环境变量

配置系统开启服务

使用管理员权限进入DOS,在cmd中,进入解压目录下的bin目录依次执行以下命令:

  1. 对mysql进行初始化。请注意,这里会生成一个临时密码,后边要使用这个临时密码
bash
mysqld --initialize --user=mysql --console
  1. 安装mysql服务
bash
mysqld --install
  1. 启动mysql服务
bash
net start mysql
  1. 登录mysql,这里需要使用之前生成的临时密码。如果窗口关了没有记录临时密码,可以将mysql目录下的data目录删除,然后再进行初始化
bash
mysql -uroot –p
  1. 修改root用户密码
bash
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
  1. 修改root用户权限
bash
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

mysql 服务启动时报“某些服务在未由其他服务或程序使用时将自动停止”

在配置文件中有 secure-file-priv 的配置,如果设置了此目录,本来解压后是没有此目录的,如果不手动创建,启动时会报错。

当时排查很久都不知道是什么原因,后来查询资料,发现 mysqld --console 命令可以将错误信息输出到控制台上,然后就看到具体的无法启动的报错日志

然后在配置的位置手动创建相应的目录,问题就解决了。

安装 MySQL 8.0(Windows版本)

安装包下载

下载地址:https://downloads.mysql.com/archives/installer/

安装步骤(截图,不完整,日后优化)

此安装示例使用 mysql-installer-community-8.0.27.1.msi

自定义安装

注:以上可以不选择相关文档与示例的组件

默认选择安装

当所有的状态都变成Complete之后,点击 Next

设置密码,用于登陆数据,建议使用学习的设置简单的密码

配置环境变量

配置环境变量与windows免安装版一样

开启/停止 MySQL 服务(Windows版本)

启动MySQL服务方式1

MySQL会以windows服务的方式为我们提供数据存储功能。开启和关闭服务的操作:

  1. 右键点击我的电脑 --> 管理 --> 服务与应用程序 --> 服务 --> 找到 MySQL 服务开启或停止。
  2. 或者:开始 --> 搜索 --> services.msc --> 服务 --> 可以找到 MySQL 服务开启或停止。

(如果不需要开机时就启动MySQL,右键MySQL --> 属性 --> 启动类型选“手动”)

mysql服务

启动MySQL服务方式2

在DOS窗口,通过命令完成MySQL服务的启动和停止(必须以管理员身份运行cmd命令窗口)

  • MySQL 启动: net start mysql
  • MySQL 关闭: net stop mysql

mysql服务

Tips: 上述命令的 mysql 是在安装 MySQL 时,默认指定的 mysql 的系统服务名,不是固定的,如果未改动,5.7版本默认是mysql,8.0版本默认是mysql80

客户端连接 MySQL

MySQL 是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。

方式一:使用 MySQL 提供的客户端命令行工具

方式二:使用系统自带的命令行工具执行指令

使用 CMD 命令行窗口,可以操作登陆与退出 MySQL,命令语法如下:

bash
mysql [-h 127.0.0.1] [-P 3306] -u root -p

参数说明:

  • -h:MySQL 服务所在的主机 IP
  • -P:MySQL 服务端口号,默认3306。注意:参数是大写
  • -u:MySQL 数据库用户名
  • -p:MySQL 数据库用户名对应的密码。注意:参数是小写

[] 内为可选参数,如果需要连接远程的 MySQL,需要加上这两个参数来指定远程主机 IP、端口,如果连接本地的 MySQL,则无需指定这两个参数。

Tips: 使用这种方式进行连接时,需要安装完毕后配置PATH环境变量。

示例1:使用 cmd 命令行输入 mysql –u用户名 –p密码

命令行操作登陆库1

示例2:使用 cmd 命令行输入 mysql --user=用户名 --password=密码 --host=ip地址 --port=端口号(这种方式一般用来登陆别人的数据库)

命令行操作登陆库2

退出连接 MySQL

直接使用 exit 命令即可退出 MySQL 连接

其他操作数据库方式

  • 通过第三方图形化界面操作
  • 通过Java代码操作

卸载MySQL(Windows版本)

  1. 先停止MySQL服务
    • 方式1:输入命令行net stop mysql注:命令中的mysql是服务名称,需要输入根据实际的名称
    • 方式2:【win+r】打开“运行”面板,输入services.msc,进行服务窗口中关闭mysql服务
  2. 卸载程序。到【控制面板】中的【程序和功能】中卸载,或者使用第三方的卸载工具,如:Geek Uninstaller
  3. 删除根文件夹。进入sql安装位置,手动删除mysql的解压(安装)的文件夹
  4. 删除C盘隐藏的数据文件夹(可选):”C:\ProgramData\MySQL“。注:如果安装或者改了配置文件,此数据文件夹目录可能不一样
  5. 删除注册表信息。【win+r】打开“运行”面板,输入regedit命令打开注册表窗口,删除以下文件:

  1. 删除环境变量的配置。进行【高级系统设置】中的【环境变量】,删除安装后配置MYSQL_HOME变量和删除path变量中的mysql路径
  2. 删除MySQL服务。使用管理员方式打开cmd命令行窗口,输入命令sc delete Mysql服务名称

MySQL 常用图形管理工具

Navicat是一套快速、可靠的数据库管理工具,Navicat 是以直觉化的图形用户界面而建的,可以兼容多种数据库,支持多种操作系统。

官网:http://www.navicat.com.cn/download/navicat-premium

SQLyog

SQLyog 是一个快速而简洁的图形化管理 MySQL 数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的 Webyog 公司出品。

安装与连接

安装:提供的 SQLyog 软件为免安装版,可直接使用

使用:输入用户名、密码,点击连接按钮,进行访问MySQL数据库进行操作

在 Query 窗口中,输入 SQL 代码,选中要执行的 SQL 代码,按 F8/F9 键运行,或按执行按钮运行。

SQLyog 常用快捷键

Object Browser

  • F5:刷新浏览对象
  • F8:运行当前的查询并且编辑运行结果
  • F9:运行当前的查询
  • Ctrl+F9:运行选中的多条查询语句
  • Shift+F9:运行所有的查询语句

SQL Formatter

  • F12:格式化当前查询语句
  • Ctrl+F12:格式化选中的查询语句
  • Shift+F12:格式化所有的查询语句

SQL Window

  • Ctrl+Shift+C:注释选中的 SQL 语句
  • Ctrl+Shift+R:删除选中的 SQL 语句
  • Ctrl+Enter:显示所有的提示列表

MySQL Workbench

MySQL Workbench MySQL 是官方提供的图形化管理工具,分为社区版和商业版,社区版完全免费,而商业版则是按年收费。支持数据库的创建、设计、迁移、备份、导出和导入等功能,并且支持 Windows、Linux 和 mac 等主流操作系统。

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

DataGrip

DataGrip 是一款由JetBrains公司出品的数据库管理客户端工具,方便连接到数据库服务器,执行sql、创建表、创建索引以及导出数据等

安装说明

点击next,一步一步的完成安装即可

选择DataGrip的安装目录,然后选择下一步

使用说明

  1. 添加数据源

配置以及驱动 jar 包下载完毕之后,就可以点击 "Test Connection" 就可以测试,是否可以连接 MySQL,如果出现 "Successed",就表示连接成功了。

  1. 展示所有数据库。连接上了 MySQL 服务之后,并未展示出所有的数据库,此时,需要设置展示所有的数据库。

  1. 创建数据库

以下两种方式都可以创建数据库:

  • create database db01;
  • create schema db01;
  1. 创建表。在指定的数据库上面右键,选择 new -> Table

  1. 修改表结构。在需要修改的表上,右键选择 "Modify Table..."

  • 如果想增加字段,直接点击+号,录入字段信息,然后点击Execute即可。
  • 如果想删除字段,直接点击-号,就可以删除字段,然后点击Execute即可。
  • 如果想修改字段,双击对应的字段,修改字段信息,然后点击Execute即可。
  • 如果要修改表名,或表的注释,直接在输入框修改,然后点击Execute即可。
  1. 在 DataGrip 中执行 SQL 语句。在指定的数据库上,右键,选择 New -> Query Console

然后就可以在打开的 Query Console 控制台,并在控制台中编写 SQL,执行 SQL。

HeidiSQL

HeidiSQL 是免费软件,其目标是易于学习。“Heidi”让您可以从运行 MariaDB、MySQL、Microsoft SQL、PostgreSQL 和 SQLite 数据库系统之一的计算机上查看和编辑数据和结构。HeidiSQL 由 Ansgar 于 2002 年发明,属于全球最流行的 MariaDB 和 MySQL 工具。

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

其他工具

  • phpMyAdmin
  • MySQLDumper
  • MySQL GUI Tools
  • MySQL ODBC Connector

I know where dry desert ends, green grass grows · MooN