本文适用于以下开发用途

  • 在CentOS/Ubuntu/Raspberry Pi等平台上遵循开源精神使用MySQL或MariaDB数据库进行开发
  • 本地安装数据库作为存储服务器或日志服务器
  • 前端开发者,在服务器上搭建数据库搭配PHP进行页面开发

MySQL介绍

mysql_logo
mysql_logo

mysql_logo

MySQL(官方发音为/maɪ ˌɛskjuːˈɛl/“My S-Q-L”,但也经常读作/maɪ ˈsiːkwəl/“My Sequel”)原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。

MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。

但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社群们对于Oracle是否还会持续支持MySQL社群版(MySQL之中唯一的免费版本)有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库。

MySQL数据库历史版本

mysql_version
mysql_version

MySQL特性

  • 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
  • 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell NetWare、NetBSD、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
  • 为多种编程语言提供了API。这些編程语言包括C、C++、C#、VB.NET、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
  • 支持多线程,充分利用CPU资源,支持多用户。
  • 优化的SQL查询算法,有效地提高查询速度。
  • 既能够作为一个单独的应用程序在客户端服务器网络环境中运行,也能够作为一个程序库而嵌入到其他的软件中。
  • 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift JIS等都可以用作數據表名和數據列名。
  • 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
  • 提供用于管理、检查、優化数据库操作的管理工具。
  • 可以处理拥有上千万条记录的大型数据库。

分支MariaDB

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。

MariaDB由MySQL的创始人米卡埃尔·维德纽斯(Ulf Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自米卡埃尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。

MariaDB的API和协议兼容MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用MySQL的连接器、程序库和应用程序也将可以在MariaDB下工作。在此基础上,由于担心甲骨文MySQL的一个更加封闭的软件项目,Fedora的计划在Fedora 19中的以MariaDB取代MySQL,维基媒体基金会的服务器同样也使用MariaDB取代了MySQL。

参考链接:
MySQL - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/MySQL
MariaDB - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/MariaDB
GNU通用公共许可证 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/GNU%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%E8%AE%B8%E5%8F%AF%E8%AF%81

MySQL社区版安装

MySQL针对不同的用户提供了2中不同的版本:

MySQL Community Server:社区版 开放源代码并提供免费下载。
MySQL Enterprise Server:企业版 包括所有高级功能和管理工具,对用户收费。

Windows10 安装

Oracle在官网提供了两种MySQL安装方式,分别为msi程序安装与压缩包下载,为了便于管理及配置ini文件可能产生的诸多问题我们这里选择msi安装方式。

打开下载官网https://dev.mysql.com/downloads/installer/,下拉至下载页面

download_page
download_page

选择Windows (x86, 32-bit), MSI Installer 324.3M 安装包 ,16.4M的为在线安装包,受网络波动及众所周知的原因不推荐下载在线安装包,在官网上提供了安装包的MD5校验码,可以校验文件完整性。

在这里会提示登录Oracle账户,会定期发送相关邮件,这里直接下拉页面选择

download_link
download_link
1
No thanks, just start my download.

打开安装文件,会弹窗UAC警告,选择是即可,之后进入安装引导界面

install_1
install_1

点击同意协议,进入下一步

install_2
install_2

选择设置类型,有5种设置类型:

  • Developer Default:安装MySQL服务器以及开发MySQL应用所需的工具。工具包括开发和管理服务器的GUI工作台、访问操作数据的Excel插件、与Visual Studio集成开发的插件、通过NET/Java/C/C++/OBDC等访问数据的连接器、例子和教程、开发文档。
  • Server only:仅安装MySQL服务器,适用于部署MySQL服务器。
  • Client only:仅安装客户端,适用于基于已存在的MySQL服务器进行MySQL应用开发的情况。
  • Full:安装MySQL所有可用组件。
  • Custom:自定义需要安装的组件。

在这里请根据个人需求不同进行安装,如果只是需要MySQL服务则选择Server only即可,接下来的教程皆为选择Server only的情况

注意

install_custom
install_custom

请注意如需Visual Studio插件 Python/C++/OBDC 官方文档等请选择Custom选项自定义组件

install_3
install_3

点击Execute后,安装程序会自动部署相关程序

install_4
install_4

这一步选择Standalone MySQL Server / Classic MySql Replication

install_5
install_5

点击Config Type的下拉框,显示有三种类型:

  • Development Machine:开发机器,MySQL会占用最少量的内存。
  • Server Machine:服务器机器,几个服务器应用会运行在机器上,适用于作为网站或应用的数据库服务器,会占用中等内存。
  • Dedicated Machine:专用机器,机器专门用来运行MySQL数据库服务器,会占用机器的所有可用内存。

个人用电脑本地部署请选择Development Machine,服务器请选择Server Machine

install_6
install_6

TCP/IP为数据库本地端口,请确保默认3306端口未占用,如果数据库不对外网开放请勾选

1
Open Firewall port for network access

如果需要远程访问调用请勿选择,”Named Pipe”和”Shared Memory”是进程间通信机制,默认即可,如需高级配置请勾选

1
Show Advanced Options

没有相关需求直接点击Next进入下一步

install_password_encode_settings
install_password_encode_settings

选择下方Legacy Authentocation Method (Retian MySql 5.x Compatibility),新型认证方式目前诸多第三方软件仍无法较好支持,为了省去后期重新配置,请选择经典认证方式

install_password
install_password

上方配置数据库密码,下方可以配置多账户权限

install_7
install_7

将MySQL数据库注册到系统服务中,默认配置即可,MySQL服务会自动随着Windows操作系统的启动而启动,随着操作系统的停止而停止,这也是MySQL官方文档建议的配置

Windows service Name可设置为默认值,只要与其它服务不同名即可。在Windows系统中基于安全需求,MySQL服务需要在一个给定的账户下运行,选择默认的Standard System Account即可。保持默认配置后点击Next。

install_8
install_8

如在第六步中选择了设置高级选项,则会出现该界面,日志文件 慢查询 DBA配置如无特殊要求默认即可

install_9
install_9

安装配置全部完成后,点击Execute会开始配置并安装组件,待全部结束后即安装完成

rapidee_path
rapidee_path

部分情况可能会导致没有注册系统环境变量,请手动将MySQL bin目录添加到系统path变量中

cmder_mysql
cmder_mysql

在CMD中输入

1
2
mysql -u root -p
ENTER PASSWORD:输入之前配置的密码

显示数据库相关信息与版权信息则为安装/配置成功

CentOS安装

输入下列命令添加 MySQL YUM 源

1
2
3
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

yum -y install mysql57-community-release-el7-11.noarch.rpm

确认yum repository已经安装

1
yum repolist enabled | grep mysql.*
centos_wegt_mysql
centos_wegt_mysql

安装MySQL数据库

1
yum install mysql-community-server
install_mysql
install_mysql

启动数据库并查看数据库状态,按Y确认安装

install_mysql_confirm
install_mysql_confirm

显示Complete!则为安装成功

启动MySQL服务并查看状态

1
2
3
systemctl start  mysqld.service

systemctl status mysqld.service
mysql_status
mysql_status

上方显示MySQL服务状态,下方显示MySQL临时密码

1
2
mysql -u root -p
ENTER PASSWORD:输入临时密码

进入数据库,通过上方密码进入MySQL数据库,配置服务器密码和防火墙

mysql_server
mysql_server

可视化管理工具

DataGrip

DataGrip连接远程数据库的心得
参见 https://www.aye10032.com/2018/08/DataGrip/

Navicat Premium 12.1.16.0安装与激活
参见 https://www.jianshu.com/p/5f693b4c9468

navicat_connect_mysql
navicat_connect_mysql

连接名自拟,主机名为localhost或127.0.0.1,端口默认为3306,输入密码即可成功连接数据库
注意
Navicat Premium 12不支持8.X认证方式,请使用经典认证方式

mysql_world
mysql_world

成功连接数据库效果如图