MySQL
关系型数据库管理系统
教程 更多
- GO web 数据库预处理的实现 2021-11-08
- 使用GO语言实现Mysql数据库CURD的简单示例 2021-11-08
- Go应该如何实现二级缓存 2021-11-08
- Golang 数据库操作(sqlx)和不定字段结果查询 2021-10-19
- win10怎么安装mysql?win10系统安装mysql的方法 2021-02-26
资讯 更多
- MySQL-Front v5.3.1.27 正式版更新 2012-12-12
发展历程
2008 年 1 月 16 日,Sun(太阳微系统)正式收购 MySQL。
2009 年 4 月 20 日,甲骨文公司宣布以每股 9.50 美元,74 亿美元的总额收购 Sun 计算机公司。
版本介绍
标准版
MySQL 标准版让您可以交付高性能、可扩展的联机事务处理 (OLTP) 应用。它提供了令 MySQL 闻名于世的易用性以及行业级的性能和可靠性。
MySQL 标准版包括 InnoDB,这使其成为一种全面集成、事务安全、符合 ACID 的数据库。此外,MySQL 复制还让您可以交付高性能、可扩展的应用。
较低的 TCO — MySQL 让您可以尽量降低数据库总拥有成本。
可靠性、性能和易用性 — MySQL 被证明是全球广受欢迎的开源数据库。
数据库开发、设计和管理 — MySQL Workbench 提供了一种集成式开发、设计和管理环境,提高了开发人员和 DBA 的工作效率。
当需要其他功能时,可以轻松升级到 MySQL 企业版或 MySQL Cluster 运营商级版本。
社区版
MySQL 社区版是全球广受欢迎的开源数据库的免费下载版本。它遵循 GPL 许可协议,由庞大、活跃的开源开发人员社区提供支持。
MySQL 社区版包括:
1、可插拔的存储引擎架构
2、多种存储引擎:InnoDB、MyISAM、NDB (MySQL Cluster)、Memory、Merge、Archive、CSV 等等
3、MySQL 复制可提高应用性能和可扩展性
4、MySQL 分区有助于增强大型数据库应用的性能和管理
5、存储过程可提高开发人员效率
6、触发器可在数据库层面实施复杂的业务规则
7、视图可确保敏感信息不受攻击
8、Performance Schema 可监视各个用户/应用的资源占用情况
9、Information Schema 有助于方便地访问元数据
10、MySQL 连接器(ODBC、JDBC、.NET 等)可以用多种语言构建应用
11、MySQL Workbench 可用于可视化建模、SQL 开发和管理
支持 20 多种平台和操作系统,包括 Linux、Unix、Mac 和 Windows。
企业版
MySQL 企业版提供了全面的高级功能、管理工具和技术支持,实现了高水平的 MySQL 可扩展性、安全性、可靠性和无故障运行时间。
它可在开发、部署和管理业务关键型 MySQL 应用的过程中降低风险、削减成本和减少复杂性。
随着互联网不断对日常生活的渗透,社交网络、各种智能移动设备的高速宽带接入以及新兴的机器对机器 (M2M) 数据交互等带来了用户数和数据量的爆炸式增长。
凭借无可比拟的扩展能力、正常运行时间和灵活性,MySQL Cluster 使用户能够应对下一代 Web、云及通信服务的数据库挑战。
应用环境
与其他的大型数据库例如 Oracle、DB2、SQL Server 等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL 提供的功能已经绰绰有余,而且由于 MySQL 是开放源码软件,因此可以大大降低总体拥有成本。
2010 年以前 Internet 上流行的网站构架方式是 LAMP(Linux Apache MySQL PHP),即是用 Linux 作为操作系统,Apache 作为 Web 服务器,MySQL 作为数据库,PHP(部分网站也使用 Perl 或 Python)作为服务器端脚本解释器。由于这四个软件都是开放源码软件,因此使用这种方式可以以较低的成本创建起一个稳定、免费的网站系统。MySQL 加 PHP 的配对在互联网上的应用相比 LAMP 来说更为常见,并获得了“动态配对”(Dynamic Duo)的雅号,大部分 Blog 网站基于的 WordPress 系统主要运用 MySQL 加 PHP 的配对。除了 LAMP 之外,用于 Solaris、Windows 和 Mac 上的网站构架也分别被称为 SAMP、WAMP 和 MAMP。
系统特性
1.使用 C 和 C++ 编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
2.支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统。
3.为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET 和 Tcl 等。
4.支持多线程,充分利用 CPU 资源。
5.优化的 SQL 查询算法,有效地提高查询速度。
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7.提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS 等都可以用作数据表名和数据列名。
8.提供 TCP/IP、ODBC 和 JDBC 等多种数据库连接途径。
9.提供用于管理、检查、优化数据库操作的管理工具。
10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
11.支持多种存储引擎。
12.MySQL 是开源的,所以你不需要支付额外的费用。
13.MySQL 使用标准的 SQL 数据语言形式。
14.MySQL 对 PHP 有很好的支持,PHP 是比较流行的 Web 开发语言。
15.MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。
16.在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)
17.复制全局事务标识,可支持自我修复式集群(5.6 新增)
18.复制无崩溃从机,可提高可用性(5.6 新增)
19.复制多线程从机,可提高性能(5.6 新增)
20.3 倍更快的性能(5.7 新增)
21.新的优化器(5.7 新增)
22.原生 JSON 支持(5.7 新增)
23.多源复制(5.7 新增)
24.GIS 的空间扩展(5.7 新增)
存储引擎
MyISAMMySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务。
InnoDB 事务型数据库的首选引擎,支持 ACID 事务,支持行级锁定,MySQL 5.5 起成为默认数据库引擎。
BDB 源自 Berkeley DB,事务型数据库的另一种选择,支持 Commit 和 Rollback 等其他事务特性。
Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 MySQL 重新启动时丢失。
Merge 将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用。
Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差。
Federated 将不同的 MySQL 服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用。
Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用。
CSV:逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个 .csv 文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV 存储引擎不支持索引。
BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录 binlog 做复制的中继。
EXAMPLE 存储引擎是一个不做任何事情的存根引擎。它的目的是作为 MySQL 源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE 存储引擎不支持编索引。
另外,MySQL 的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。
应用架构
单点(Single),适合小规模应用
复制(Replication),适合中小规模应用
集群(Cluster),适合大规模应用
安装配置
安装教程
以 mysql-5.0.27-win32 为例
1、打开下载的 mysql 安装文件 mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”。
2、mysql 安装向导启动,按“Next”继续。
3、选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程:
在“Developer Components(开发者部分)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQL Server(mysql 服务器)”、“Client Programs(mysql 客户端程序)”、“Documentation(文档)”也如此操作,以保证安装所有文件。点选“Change...”,手 动指定安装目录。
4、填上安装目录,例如“F:\Server\MySQL\MySQL Server 5.0”,建议不要与操作系统放在同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。
5、返回刚才的界面,按“Next”继续。
6、确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
7、正在安装中,请稍候,直到出现界面询问是否要注册一个账号,或是使用已有的账号直接登陆,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。
8、软件安装完成。
配置教程
1、软件安装完成后,在出现界面中,有一个很好的功能,mysql 配置向导,不用像以前一样,自己手动乱七八糟的配置 my.ini 了,将“Configure the Mysql Server now”前面的勾打上,点“Finish”结束软件的安装并启动 mysql 配置向导。
2、mysql 配置向导启动界面,按“Next”继续。
3、选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
4、选择服务器类型,“Developer Machine(开发测试类,mysql 占用很少资源)”、“Server Machine(服务器类型,mysql 占用较多资源)”、“DedicatedMySQL Server Machine(专门的数据库服务器,mysql 占用所有可用资源)”,大家根据自己的类型选择了,一般选“Server Machine”,不会太少,也不会占满。
5、选择 mysql 数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对 MyISAM 数据类型的支持仅限于 non-transactional),根据自己的用途选择,按“Next”继续。
6、对 InnoDB Tablespace 进行配置,就是为 InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,也可使用默认位置,直接按“Next”继续。
7、选择您的网站的一般 mysql 访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20 个左右)”、“Online Transaction Processing(OLTP)(500 个左右)”、“Manual Setting(手动设置,自己输一个数)”,个人使用可选择“Online Transaction Processing(OLTP)”,自己的服务器,应该够用了,按“Next”继续。
8、是否启用 TCP/IP 连接,设定端口,如果不启用,就只能在自己的机器上访问 mysql 数据库了,若启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样 MySQL 就不会允许细小的语法错误。如果使用者是个新手,建议取消标准模式以减少麻烦。但熟悉 MySQL 以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续。
9、西文编码,第二个是多字节的通用 utf8 编码,都不是我们通用的编码,这里选择第三个,然后在 Character Set 那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是 gbk 的字库容量大,包括了 gb2312 的所有汉字,并且加上了繁体字、和其它 乱七八糟的字——使用 mysql 的时候,在执行数据操作命令之前运行一次“SET NAMES GBK;”(运行一次就行了,GBK 可以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字。按“Next”继续。
10、选择是否将 mysql 安装为 windows 服务,还可以指定 Service Name(服务标识名称),是否将 mysql 的 bin 目录加入到 Windows PATH(加入后,就可以直接使用 bin 下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出 mysql.exe 的完整地址,很方便)。按“Next”继续。
11、询问是否要修改默认 root 用户(超级管理)的密码(默认为空),“New root password”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码),“Confirm(再输一遍)”内再填一次,防止输错。 “Enable root access from remote machines(是否允许 root 用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
12、确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效。
13、设置完毕,按“Finish”结束 mysql 的安装与配置——这里有一个比较常见的错误,就是不能“Start service”,一般出现以前有安装 mysql 的服务器上,解决的办法,先保证以前安装的 mysql 服务器彻底卸载掉了;不行的话,检查是否按上面一 步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将 mysql 安装目录下的 data 文件夹备份,然后删除,在安装完成后,将安装生成的 data 文件夹删除,备份的 data 文件夹移回来,再重启 mysql 服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。
安装问题
使用说明
1.如果是用 MySQL +Apache,使用的又是 FreeBSD 网络操作系统的话,安装时应按注意到 FreeBSD 的版本问题,在 FreeBSD 的 3.0 以下版本来说,MySQL Source 内含的 MIT-pthread 运行是正常的,但在这版本以上,必须使用 native threads,也就是加入一个 with-named-thread-libs=-lc_r 的选项。
2.如果在 COMPILE 过程中出了问题,请先检查 gcc 版本是否在 2.81 版本以上,gmake 版本是否在 3.75 以上。
3.如果不是版本的问题,那可能是内存不足,请使用 ./configure--with-low-memory 来加入。
4.如果要重新做 configure,那么可以键入 rmconfig.cache 和 make clean 来清除记录。
5.把 MySQL 安装在 /usr/local 目录下,这是缺省值,也可以按照需要设定所安装的目录。
服务无法启动
1、首先,查看 MySQL 的服务是否存在。如果不存在需要先安装服务。安装服务的方法是进入 MySQL Server 的安装目录,找到 bin 目录,然后找到文件 mysqld.exe,使用命令行运行 mysqld --install MySQL57 安装服务 (如果不成功尝试使用管理员方式运行,MySQL57 是服务的名字,默认是 MySQL)。
2、如果上述方法安装服务失败,则可采用下述方法安装 (成功则跳过此步)。搜索程序“regedit.exe”,即注册表编辑器,打开后找到“计算机”——"HKEY_LOCAL_MACHINE"——“SYSTEM”——“CurrentControlSet”——“Services”,然后在该目录下新建项 MySQL57(服务的名字) 即可成功建立项目。
3、找到新建的项,然后可以看到其中有 ImagePath 这一项,这其实是可执行文件的路径。因为 MySQL 服务是需要靠 mysqld 这个命令来启动的,所以检查下 ImagePath 的路径是否正确。路径错误导致启动服务时报错—“无法找到文件”。
4、修改 ImagePath 的内容为正确的路径值,正确的值是"D:\MySQL\MySQL Server 5.7\bin\mysqld" --defaults-file="D:\MySQL\MySQL Server 5.7\my.ini" MySQL 是这种形式的,对照一下,如果路径不对,修改过来。
5、重启计算机,再次启动服务,并可以成功运行 MySQL 服务。
安装报错
1.Starting MySQL.Manager of pid-file quit without updating fi[失败]
关于这个错误原因有很多,最大的可能是没有创建测试数据库,可以用/usr/local/mysql/scripts/mysql_install_db –user=mysql 命令进行创建;另外一个原因可能是权限设置问题,需要赋予 mysql 的 data 权限,可以用 chmod -R 命令。
2.FATAL ERROR: Could not find /home/mysql/bin/my_print_defaults If you are using a binary release,you must run this script from
within the directory the archive extracted into. If you compiled
MySQL yourself you must run ‘make install’ first.
这个错误,是没有指明 mysql 的 data 路径导致的,可以很简单的进行解决:
vim /etc/my.cnf
在[mysqld] 后面加上路径:
basedir = /usr/local/mysql
datadir =/opt/data;
3.-bash: mysql: command not found
用 mysql 命令进行登陆 mysql 报错,原因是没有设置环境变量,需要设置,或者进入到 bin 目录进行登陆 cd /usr/local/mysql/bin
mysql -u root
4.ERROR 1130: Host ’192.168.1.3′ is not allowed to connect to this MySQL server
用 mysql 远程工具链接数据库报错,这个错误原因是没有开放远程链接功能,可以在 mysql 里面输入如下命令进行解决:GRANT ALL PRIVILEGES ON *.* TO ’root‘@’%' IDENTIFIED BY ’password’ WITH GRANT OPTION
初学基
格式:mysql -h 主机地址 -u 用户名 -p 用户密码
1.例 1:连接到本机上的 MYSQL。
首先在打开 DOS 窗口,然后进入目录 mysqlbin,再键入命令 mysql -uroot -p,回车后提示输入密码,如果刚安装好 MYSQL,超级用户 root 是没有密码的,故直接回车即可进入到 MySQL 中了,MySQL 的提示符是:mysql>
2.例 2:连接到远程主机上的 MYSQL。假设远程主机的 IP 为:110.110.110.110,用户名为 root,密码为 abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u 与 root 可以不用加空格,其它也一样)
3.退出 MySQL 命令:exit(回车)
注意:想要成功连接到远程主机,需要在远程主机打开 MySQL 远程访问权限
方法如下:
在远程主机中以管理员身份进入
输入如下命令
mysql>GRANT ALL PRIVILEGES ON *.* TO 'agui'@%'IDENTIFIEDBY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
//赋予任何主机访问数据的权限
mysql>FLUSH PRIVILEGES
//修改生效
agui 为我们使用的用户名
密码为 123
即:在远程主机上作好设置,我们即可通过 mysql -h110.110.110.110 -uagui -p123 连接进远程主机
修改密码
格式:mysqladmin -u 用户名 -p 旧密码 password 新密码
1.例 1:给 root 加个密码 ab12。首先在 DOS 下进入目录 mysqlbin,然后键入以下命令
mysqladmin -uroot -password ab12
注:因为开始时 root 没有密码,所以-p 旧密码一项就可以省略了。
2.例 2:再将 root 的密码改为 djg345。
mysqladmin -uroot -pab12 password djg345
增加用户
(注意:和上面不同,下面的因为是 MySQL 环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库。* to 用户名@登录主机 identified by“密码”
例 1、增加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:
grant select,insert,update,delete on *.* to test1@“%” Identified by “abc”;
但例 1 增加的用户是十分危险的,你想如某个人知道 test1 的密码,那么他就可以在 internet 上的任何一台电脑上登录你的 mysql 数据库并对你的数据可以为所欲为了,解决办法见例 2。
例 2、增加一个用户 test2 密码为 abc,让他只可以在 localhost 上登录,并可以对数据库 mydb 进行查询、插入、修改、删除的操作(localhost 指本地主机,即 MYSQL 数据库所在的那台主机),这样用户即使用知道 test2 的密码,他也无法从 internet 上直接访问数据库,只能通过 MYSQL 主机上的 web 页来访问了。
grant select, insert, update, delete on mydb.* to test2@localhost identified by “abc”;
如果你不想 test2 有密码,可以再打一个命令将密码消掉。
grant select, insert, update, delete on mydb.* to test2@localhost identified by “”;
下面来看看 MySQL 中有关数据库方面的操作。注意:必须首先登录到 MySQL 中,以下操作都是在 MySQL 的提示符下进行的,而且每个命令以分号结束。
操作技巧
1.如果在键入命令时,回车后发现忘记加分号,无须重打一遍命令,只要打个分号回车即可。也就是说可以把一个完整的命令分成几行来打,完后使用分号作结束标志。
2.部分版本中,可以使用光标上下键调出之前使用过的命令。
显示命令
1.显示数据库列表。
show databases;
刚开始时才两个数据库:mysql 和 test。mysql 库很重要它里面有 MySQL 的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2.显示库中的数据表:
use mysql; //打开库,
show tables;
3.显示数据表的结构:
describe 表名;
4.建库:
create database 库名;
5.建表:
use 库名;
create table 表名 (字段设定列表);
6.删库和删表:
drop database 库名;
drop table 表名;
7.将表中记录清空:
delete from 表名;
8.显示表中的记录:
select * from 表名;
9.显示最后一个执行的语句所产生的错误、警告和通知:
show warnings;
10.只显示最后一个执行语句所产生的错误:
show errors;
操作实例
drop database if exists school; //如果存在 SCHOOL 则删除
create database school; //建立库 SCHOOL
use school; //打开库 SCHOOL
create table teacher //建立表 TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default‘深圳',
year date
); //建表结束
//以下为插入字段
insert into teacher values('','glchengang',’XX 公司‘,'1976-10-10');
insert into teacher values('','jack',’XX 公司‘,'1975-12-23');
注:在建表中:
1.将 ID 设为长度为 3 的数字字段:int(3) 并让它每个记录自动加一:auto_increment 并不能为空:not null 而且让他成为主字段 primary key。
2.将 NAME 设为长度为 10 的字符字段。
3.将 ADDRESS 设为长度 50 的字符字段,而且缺省值为深圳。varchar 和 char 有什么区别呢,只有等以后的文章再说了。
4.将 YEAR 设为日期字段。
如果你在 mysql 提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为 school.sql,然后复制到 c:\下,并在 DOS 状态进入目录\mysql\bin,然后键入以下命令:
mysql -uroot -p 密码 < c:\school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
文本转数据库
1.文本数据应符合的格式:字段数据之间用 tab 键隔开,null 值用\n来代替。
例:
3.rose 深圳二中 1976-10-10
4.mike 深圳一中 1975-12-23
2.数据传入命令 load data local infile“文件名”into table 表名;
注意:你最好将文件复制到\mysql\bin 目录下,并且要先用 use 命令打开表所在的数据库
或者登录数据库前将路径转移(cd)到要导入文本所在路径。
备份数据库
(命令在 DOS 的\mysql\bin 目录下执行)
mysqldump --opt school>school.bbb
注释:将数据库 school 备份到 school.bbb 文件,school.bbb 是一个文本文件,文件名任取,打开看看你会有新发现。
自动备份 mysql 数据库的方法
1、先是建立批处理文件,将以下代码另存为.bat 文件,文件名最好为英文。注意下面的路径,以笔者自己的数据库为例,数据库安装在 D 盘下 mysql\mysql 下,备份位置在 F:\beifen,后面的代码是日期。
@echo off
color 0D
MODE con: COLS=71 LINES=25
title mysql 数据库自动备份脚本 (任务计划)--脚本作者:http://www。***。com
set sou_dir="D:\mysql\Mysql\data"
set obj_dir=F:\beifen\%date:~0,10%
net stop mysql
md %obj_dir%
xcopy /e /y %sou_dir% %obj_dir%
net start mysql
@echo off&setlocal enabledelayedexpansion
call:D,30
echo. 30 天前的日期为:%D%
echo. 删除 30 天以前备份......
if exist F:\beifen\%D% rd /s /q F:\beifen\%D%
echo 自动备份完成,程序将自动退出......
还原导入
还原/导入数据库,导入过程,进入 mysql 数据库控制台,如 mysql -u root -p
mysql>use 数据库
然后使用 source 命令,后面参数为脚本文件 (如这里用到的.sql)
mysql>source d:\dbname.sql
如果提示找不到文件,输完 source 后,可以用鼠标把文件直接拖进命令行窗口
启动跟踪
mysqld --debug
关闭服务器
mysqladmin -u root shutdown
启动服务
mysqld--console
安全设置
一、内部安全性 - 保证数据目录访问的安全
1、数据库文件。
2、日志文件。
二、外部安全性 - 保证网络访问的安全
1、MySQL 授权表的结构和内容
2、服务器控制客户访问
3、避免授权表风险
4、不用 GRANT 设置用户
管理工具
可以使用命令行工具管理 MySQL 数据库(命令 mysql 和 mysqladmin),也可以从 MySQL 的网站下载图形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。
phpMyAdmin 是由 php 写成的 MySQ L 资料库系统管理程程序,让管理者可用 Web 界面管理 MySQL 资料库。
phpMyBackupPro 也是由 PHP 写成的,可以透过 Web 界面创建和管理数据库。它可以创建伪 cronjobs,可以用来自动在某个时间或周期备份 MySQL 数据库。
另外,还有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager,navicat 等等。
连接方式
应用程序可透过 ODBC 或 ADO 方式,经由使用 MyODBC 与 MySQL 数据库连接。
MS .Net Framework 下的程序(例如:C#、VB.NET)可透过 ADO.NET 的方式,经由使用 MySQL.Net 与 MySQL 数据库连接。
C/C++ 可使用 MySQL++ 或是直接使用 MySQL 内置 API 与 MySQL 数据库连接。
PHP 可透过 PHP 的 MySQLi 与 MySQL 数据库连接,具备比 MySQL 模块更好的性能。另外 PHP6 可使用 mysqlnd 与 MySQL 数据库连接。
JAVA 程序可通过 JDBC 方式与 MySQL 进行连接,MySQL 官方提供了 JDBC 驱动程序。
可通过 MySQL 客户端软件与 MySQL 进行连接,如 mysqlfront、mysqlyog、mysqlbrowser 等。
javascript 可以通过使用 fibjs 的内置 mysql 模块与 MySQL 数据库连接。
解决方法
MySQL 中文排序错误的解决方法
方法 1
在 MySQL 数据库中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在 MySQL 的很多版本中都存在。如果这个问题不解决,那么 MySQL 将无法实际处理中文。
出现这个问题的原因是:MySQL 在查询字符串时是大小写不敏感的,在编绎 MySQL 时一般以 ISO-8859 字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上 "binary" 属性,使之作为二进制比较,例如将 "name char(10)" 改成 "name char(10)binary"。
方法 2
如果你使用源码编译 MySQL,可以编译 MySQL 时使用 --with--charset=gbk 参数,这样 MySQL 就会直接支持中文查找和排序了。
授权问题
授权协议
MySQL 遵守的不只是 GPL 协议,而是双授权模式(dual license)即你在遵守 GPL 协议的开源项目使用 MySQL,需要遵守 GPL 协议方能使用。如果你在非开源项目使用(即软件不打算开放源代码),且该软件用来销售,则需要向 MySQL 支付相应 license 费用。
手册 bug
在 5.5.31 版本时人们发现 Oracle 取消了其中的 GPL 协议,造成了一定的不安。有开发者在 MySQL 程序臭虫网站上举报这项授权错误问题,随即 MySQL 工程服务总监 Yngve Svendsen 在网站上坦言,这的确是一个文件臭虫,因为 man 手册程序重新编译时套用了错误的授权内容。不过仍然有人认为,Oracle 取消开源授权改采商业授权的“这一天迟早是要到来的”,并寻求其他代替方案。
远程访问
1:将 localhost 改成 "%"
修改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改成"%"
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
mysql>FLUSH PRIVILEGES;
2:使用 myuser/mypassword 从任何主机连接到 mysql 服务器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
使用 myuser/mypassword 从 ip 为 192.168.225.166 的主机连接到 mysql 服务器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.225.166' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
3:泛授权
mysql -h localhost -u root
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; //赋予任何主机上以 root 身份访问数据的权限
mysql>FLUSH PRIVILEGES;
1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面带来了更好的性能:读/写工作负载、IO 密集型工作负载、以及高竞争("hot spot"热点竞争问题)工作负载。
2. NoSQL:MySQL 从 5.7 版本开始提供 NoSQL 存储功能,在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。
3. 窗口函数 (Window Functions):从 MySQL 8.0 开始,新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式。窗口函数与 SUM()、COUNT() 这种集合函数类似,但它不会将多行查询结果合并为一行,而是将结果放回多行当中。即窗口函数不需要 GROUP BY。
4. 隐藏索引:在 MySQL 8.0 中,索引可以被“隐藏”和“显示”。当对索引进行隐藏时,它不会被查询优化器所使用。我们可以使用这个特性用于性能调试,例如我们先隐藏一个索引,然后观察其对数据库的影响。如果数据库性能有所下降,说明这个索引是有用的,然后将其“恢复显示”即可;如果数据库性能看不出变化,说明这个索引是多余的,可以考虑删掉。
5. 降序索引:MySQL 8.0 为索引提供按降序方式进行排序的支持,在这种索引中的值也会按降序的方式进行排序。
6. 通用表表达式 (Common Table Expressions CTE):在复杂的查询中使用嵌入式表时,使用 CTE 使得查询语句更清晰。
7. UTF-8 编码:从 MySQL 8 开始,使用 utf8mb4 作为 MySQL 的默认字符集。
8. JSON:MySQL 8 大幅改进了对 JSON 的支持,添加了基于路径查询参数从 JSON 字段中抽取数据的 JSON_EXTRACT() 函数,以及用于将数据分别组合到 JSON 数组和对象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函数。
9. 可靠性:InnoDB 支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以实现事务完整性,要么失败回滚,要么成功提交,不至于出现 DDL 时部分成功的问题,此外还支持 crash-safe 特性,元数据存储在单个事务数据字典中。
10. 高可用性 (High Availability):InnoDB 集群为您的数据库提供集成的原生 HA 解决方案。
11. 安全性:对 OpenSSL 的改进、新的默认身份验证、SQL 角色、密码强度、授权
版本列表
-
-
-
Navicat for MySQL v15.0.21.0 官方中文版
Navicat for MySQL是一个强大的MySQL数据库管理和开发工具。使用了 ...
软件大小:66.8 MB 更新时间:2021-08-05
-
-
-
-
MYSQL v8.0.23 中文版
MySQL数据库是一款小型关联式数据库管理系统,由于MySQL数据库体积小、速度快、 ...
软件大小:139.1 MB 更新时间:2021-02-23
-
-
-
-
MySQL 64位 v8.0.11 官方版
MySQL是一个真正多用户,多线程结构化查询语言数据库服务器。MySQL是一个关系型 ...
软件大小:272.3 MB 更新时间:2021-01-29
-
-
-
-
MySQL数据库管理工具系统 v8.0.22.0
MySQL是瑞典 MySQL AB 公司推出的一款多线程的,结构化查询语言数据库管理 ...
软件大小:2.5 MB 更新时间:2020-10-28
-
-
-
-
MySQL-Front v5.3.1.27 正式版
MySQL-Front是一款小巧的管理Mysql的应用程序,主要特性包括多文档界面, ...
软件大小:3.9 MB 更新时间:2012-12-12
-
