CONTENTS
Analysis
- Anemometer - Box SQL slow query monitor.
- innodb-ruby - A parser for InnoDB file formats, in Ruby.
- innotop - a ‘top’ clone for MySQL with many features and flexibility.
- Prometheus/mysqld_exporter - Time series database for real-time monitoring and alerting.
- pstop - a top-like program for MySQL, collecting, aggregating and displaying information from performance_schema.
- mysql-statsd - A Python daemon to collect information from MySQL and send it via StatsD to Graphite.
- MySQLTuner-perl - A script that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability.
Backup
- MyDumper - Logical, parallel backup/dumper tool for MySQL
- MySQLDumper - open-source web based backup tool - useful for shared webhosting
- Percona Xtrabackup - an open-source hot backup utility for MySQL - based servers that doesn’t lock your database during the backup.
Benchmarking
- iibench-mysql - Java based version of the Index Insertion Benchmark for MySQL/Percona/MariaDB.
- Sysbench - a modular, cross-platform and multi-threaded benchmark tool.
ChatOps
Configuration
- mysql-compatibility-config - make MySQL configuration behave more like newer (or older) releases of MySQL.
Connectors
- Connector/Python - a standardized database driver for Python platforms and development.
- go-sql-driver - a lightweight and fast MySQL-Driver for Go’s (golang) database/sql package.
- libAttachSQL - libAttachSQL is a lightweight, non-blocking C API for MySQL servers.
- MariaDB Java Client - LGPL-licensed MariaDB Client Library for Java Applications.
- MySQL-Python - MySQL database connector for Python programming.
- node-mysql - A pure Nodejs Javascript client implementing the MySQL protocol.
- PHP mysqlnd - MySQL native driver for MySQL, deprecating older libmysql based driver.
Deployment
- MySQL Docker - Official Docker images.
- MySQL Sandbox - a tool that installs one or more MySQL servers within seconds, easily, securely, and with full control.
Development
- Flywaydb - Database migrations; Evolve your database schema easily and reliably across all your instances
- Liquibase - Source control for your database
- Propagator - Centralized schema & data deployment on a multi-everything topology
- Shift - An application that helps you run schema migrations on MySQL databases
GUI
- Adminer - Database management in a single PHP file.
- HeidiSQL - MySQL GUI frontend for Windows.
- MySQL Workbench - provides DBAs and developers an integrated tools environment for database design & modeling; SQL devleopment; database administration.
- phpMyAdmin - a free software tool written in PHP, intended to handle the administration of MySQL over the Web.
- SequelPro - a Mac database management application for working with MySQL databases.
- mycli - A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.
- SQLyog Community edition - SQLyog Community edition. For Windows, works fine under wine in Mac and Linux
HA
- Galera Cluster - a true Multimaster Cluster based on synchronous replication.
- MariaDB Replication Manager - a high availability solution to manage MariaDB 10.x GTID replication.
- MHA - Master High Availability Manager and tools for MySQL
- MySQL Fabric - an extensible framework for managing farms of MySQL Servers.
- Percona Replication Manager - Asynchronous MySQL replication manager agent for Pacemaker. Supports file and GTID based replication, geo-distributed clusters using booth.
Proxy
- MaxScale - open-source, database-centric proxy.
- Mixer - a MySQL proxy powered by Go which aims to supply a simple solution for MySQL sharding.
- MySQL Proxy - A simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication.
- ProxySQL - High performance proxy for MySQL.
- MySQL Router - MySQL Router is lightweight middleware that provides transparent routing between your application and any backend MySQL Servers.
Replication
- orchestrator - MySQL replication topology management and visualization tool.
- Tungsten Replicator - A high performance, open source, data replication engine for MySQL.
Schema
- common_schema - DBA’s framework for MySQL, providing a function library, views library and QueryScript interpreter.
- sys - A collection of views, functions and procedures to help MySQL administrators get insight in to MySQL Database usage.
Server
- MariaDB - Community developed fork of MySQL server.
- MySQL Server & MySQL Cluster - Official Oracle’s MySQL server & MySQL Cluster distribution.
- Percona Server - An enhanced, drop-in MySQL replacement.
- WebScaleSQL - WebScaleSQL, Version 5.6, based upon the MySQL-5.6 community releases.
Sharding
- vitess - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.
- jetpants - An automation suite for managing large range sharding clusters, by Tumblr.
Toolkits
- go-mysql - A pure go library to handle MySQL network protocol and replication.
- MySQL Utilities - a collection of command-line utilities, written in Python, that are used for maintaining and administering MySQL servers, either individually, or within Replication hierarchies.
- Percona Toolkit - a collection of advanced command-line tools to perform a variety of MySQL server and system tasks that are too difficult or complex to perform manually.
- gh-ost - GitHub’s online schema migration for MySQL.
- openark kit - a set of utilities that solve everyday maintenance tasks, which may be complicated or time consuming to do by hand, written in Python.
- UnDROP - a tool to recover data from dropped or corrupted InnoDB tables.
Resources
Conferences
- FOSDEM - a free event for software developers to meet, share ideas and collaborate. Annually, in Brussels. Offers “MySQL & friends” room.
- MySQL Central - Oracle’s annual MySQL conference, as part of Oracle Open World.
- Percona Live - MySQL & Openstack focused conference.
- SCALE - A community organized Linux and Open Source conference held annually in Southern California. The local MySQL community runs a track under the name MySQL Community Day.
e-books
- SQL-exercise - contains several SQL exercises, including the schema description figure, SQL code to build schema, questions and solutions in SQL. Based on wikibook SQL Exercises.
Media
- DBHangOps - a bi-weekly google hangout meeting of various members of the MySQL community that simply want to talk shop about MySQL in their day-to-day .
- OurSQL Podcast - The MySQL database community podcast.
Newsletters
- Weekly MySQL News - Unofficial weekly news digest of all things MySQL.
- 我们将对各个资源项进行编译整理。
- 整理后的内容,将收录在伯乐在线资源频道。可参考已整理的内容:
分析工具
- Anemometer - 一个 SQL 慢查询监控器。
- innodb-ruby - 一个对 InooDB 格式文件的解析器,用于 Ruby 语言。
- innotop - 一个具备多种特性和可扩展性的 MySQL 版 'top' 工具。
- pstop - 一个针对 MySQL 的类 top 程序,用于收集,汇总以及展示来自 performance_schema 的信息。
- mysql-statsd - 一个收集 MySQL 信息的 Python 守护进程,并通过 StatsD 发送到 Graphite。
备份
- MyDumper - 逻辑的,并行的 MySQL 备份/转储工具。
- MySQLDumper - 基于 web 的开源备份工具-对于共享虚拟主机非常有用。
- mysqldump-secure - 将加密,压缩,日志,黑名单和 Nagios 监控一体化的 mysqldump 安全脚本。
- Percona Xtrabackup - 针对 MySQL 的一个开源热备份实用程序——在服务器的备份期间不会锁定你的数据库。
性能测试
- iibench-mysql -基于 Java 的 MySQL/Percona/MariaDB 索引进行插入性能测试工具。
- Sysbench - 一个模块化,跨平台以及多线程的性能测试工具。
聊天应用
配置
- mysql-compatibility-config - 使 MySQL 配置起来更像新的(或先前)的 MySQL 版本。
连接器
- Connector/Python - 一个对于 Python 平台和开发的标准化数据库驱动程序。
- go-sql-driver - 一个 Go 语言的轻量级、极速的 MySQL 驱动程序。
- libAttachSQL - libAttachSQL 是 MySQL 服务器的一个轻量级,非阻塞的 C 语言 API。
- MariaDB Java Client - 针对 Java 应用且经过 LGPL 许可的 MariaDB 客户端库。
- MySQL-Python - 一个 Python 语言的 MySQL 数据库连接器。
- PHP mysqlnd - 针对 MySQL 的 MySQL 本地驱动,弃用过时的 libmysql 基础驱动。
开发
- Flywaydb - 数据库迁移;任意情况下轻松可靠地演变你的数据库版本。
- Liquibase - 对你的数据库进行源代码控制。
- Propagator - 集中模式和数据部署在一个多维拓扑上。
GUI
- Adminer - 一个 PHP 编写的数据库管理工具。
- HeidiSQL - Windows 下的 MySQL 图形化管理工具。
- MySQL Workbench - 提供给数据库管理员和开发人员进行数据库设计和建模的集成工具环境;SQL 开发;数据库管理。
- phpMyAdmin - 一个 PHP 写成的开源软件,意图对 web 上的 MySQL 进行管理。
- SequelPro - 一个 mac 下运行 MySQL 的数据库管理应用程序。
- mycli - 一个带自动补全和语法高亮的终端版 MySQL 客户端
HA
- Galera Cluster - 一个基于同步复制的多主机集群方案。
- MHA - 针对 MySQL 的优秀高可用管理器及工具
- MySQL Fabric - 一个用于管理 MySQL 服务器场(Server Farms)的可扩展框架。
- Percona Replication Manager - 针对 MySQL 的异步复制管理代理。支持以文件和 GTID 为基础的复制,使用 booth 实现的地理分布式集群。
代理
- MaxScale - 开源,以数据库为中心的代理。
- Mixer - Go 实现的一个 MySQL 代理,目的为 MySQL 分片提供一个简单的解决方案。
- MySQL Proxy - 一个处于你的客户端和 MySQL 服务端之间的简单程序,它可以检测、分析或者改变它们的通信。
- ProxySQL - 高性能的 MySQL 代理。
复制
- orchestrator - 对 MySQL 复制拓扑管理并可视化的工具。
- Tungsten Replicator - MySQL 的一个高性能、开源、数据复制引擎。
模式
- common_schema - MySQL DBA 的框架, 提供一个具有函数库、视图库和查询脚本的解释器。
- sys - 一个视图、函数和过程的集合,以帮助 MySQL 管理人员更加深入理解 MySQL 数据库的使用。
服务器
- MariaDB - MySQL server 的一个由社区开发的分支。
- MySQL Server & MySQL Cluster - Oracle 官方的 MySQL server 和 MySQL 集群分布。
- Percona Server - 一个加强版的 MySQL 替代品
- WebScaleSQL - WebScaleSQL,5.6 版本,基于 MySQL 5.6 社区版本。
分片
工具包
- go-mysql - 一个纯 go 的库,用于处理 MySQL 的网络协议和复制。
- MySQL Utilities - 一个命令行实用程序的集合,Python 语言编写,用于维护和管理单一或多层的 MySQL。
- Percona Toolkit - 一个先进的命令行工具集,用于执行对于 MySQL 服务器和系统过于困难或复杂的任务。
- openark kit - 一组实用的工具,解决日常的维护工作,包括一些复杂的或需徒手操作的,用 Python 语言编写。
- UnDROP - 一个用来恢复删除或损坏的 InnoDB 表中数据的工具。
资源
会议
- FOSDEM - 一个软件开发人员见面、交流思想与协作的活动。每年在 Brussels 举行。提供 “MySQL & friends” 开发工作室。
- MySQL Central - Oracle 年度 MySQL 大会,是 Oracle Open World 的一部分。
- Percona Live - MySQL 和 OpenStack 的重要会议。
- SCALE - 一个每年在南加州举办,由社区组织的 Linux 和 开源软件大会。由当地 MySQL社区组织并以MySQL社区日的名义举办。
电子书
- SQL-exercise - 包含几个 SQL 练习,包括模式描述,用 SQL 语句去建立模式,SQL 的问题及解决方案。以 wikibook SQL 练习为基础。
媒体
- DBHangOps - 两周一次由各种各样的 MySQL 社区人员参加的 google 聚集大会,大会的日常就是谈论一切关于 MySQL 的东西。
- OurSQL Podcast - MySQL 数据库社区播客。
新闻周刊
- Weekly MySQL News - 非官方的 MySQL新闻摘要,包含关于MySQL的各类信息。
微信公众号
-
from https://github.com/jobbole/awesome-mysql-cn-------------------from http://hao.jobbole.com/?catid=7
开发框架
更多 »Go-MySQL-Driver
一个Go语言的轻量级极速的mysql驱动GreenDAO
一个安卓平台上的轻量极速的ORM解决方案Dataset
懒人的数据库YapDatabase
sqlite数据库访问层redbean
轻量级php的ORM框架JugglingDB
Node.JS 的跨数据库 ORM 框架
-------------------------------
MySQL 简单操作
一、安装后
安装 mysql 后设置管理员 root 密码
mysqladmin -u root password 123456
修改 root 密码
mysqladmin -uroot -p password 'newpassword'
重设 root 密码
/etc/rc.d/mysqld stop
mysqld_safe --skip-grant-tables &
mysql -uroot mysql
UPDATE user SET password=PASSWORD("newpassword") WHERE User='root';
FLUSH PRIVILEGES;
二、登录数据库
连接本地 mysql
mysql -uroot -p
通过 IP 和端口连接远程mysql服务器。-h:
指定数据库服务器IP,-P:
指定要连接的端口号。
mysql -u root -p 123456 -h ip -P 3306
通过 TCP 连接管理不同端口的多个 MySQL(注意:MySQL4.1 以上版本才有此项功能)
mysql -u root --p 123456 --protocol=tcp --host=localhost --port=3307
通过 socket 套接字管理不同端口的多个 MySQL
mysql -u root -p --socket=/tmp/mysql3307.sock
退出 mysql
mysql> exit;
三、 数据库操作
显示有多少数据库
show databases;
创建与删除molyx数据库
create database molyx;
drop database molyx;
选定molyx数据库
use molyx;
当前选择的数据库
select database();
查看状态
show status;
查看进程
show processlist;
显示当前用户
select user();
显示所有用户
select user,host,password from mysql.user;
显示用户molyxuser权限
show grants for molyxuser@localhost;
查看名为molyx的数据库
mysqlshow -uroot -p molyx
四、 数据表操作
显示molyx库中的数据表
show tables from molyx;
当前数据包含的表信息
show tables;
查看表结构
describe user;
or
desc tablename;
or
show columns from tablename;
建表
create table tablename(<column1><type1>,<column2><type2>,<column3><type3>);
example:
create table MyClass(
id int(4) NOT NULL primary key auto_increment,
name char(20) NOT NULL,
sex int(4) NOT NULL default '0',
degree double(16,2)) ENGINE = MYISAM;
查询表中数据
查询所有行
select * from tablename;
查询并排序
select * from tablename order by id desc;
查询前几行数据
select * from tablename order by id limit 0,2;
指定条件查询
select * from tablename where name = 'type';
查询唯一不重复记录
select distinct name from tablename;
插入数据
insert into tablename (<column1>,<column2>,<column3>) values (type1,type2,type3);
or
insert into tablename values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
删除表中数据
delete from tablename where id=N
修改表中数据
update tablename set column='value' where id=1;
or
update tablename set column=replace(column,'oldvalue','newvalue');
example:
update article set content=concat('你好',content);
update user set pass='123456' where name='name';
更改用户名
update set user='newname' where user='oldname';
更改表名
rename table tablenameold to tablenamenew;
在表中增加字段
alter table tablename add column type default '0';
example:
alter table user add column date char(8) after pass;
在user表中修改字段名及字段数据类型
alter table tablename change column <column1> <type1> char(10);
example:
alter table user change column pass password char(10);
删除表中字段
alter table tablename grop column <column1>;
example:
alter table user drop column date;
删除用户molyxuser
use mysql;
DELETE FROM user WHERE User='molyxuser';
or
drop user 'molyxuser'@'%';
删除表
drop table tablename;
导出一个表
mysqldump -u user -p password tablename > filename
五、权限操作
先创建个molyx库,再创建个可以操作molyx库的用户molyxuser,密码为123456
create database molyx;
grant select,insert,update,delete,create,alter,create temporary tables,create view,show view,drop on molyx.* to 'molyxuser'@'localhost' identified by '123456';
or
grant all on molyx.* to 'molyxuser’@localhost identified by '123456';
收回molyxuser针对molyx库的所有权限
revoke all on molyx.* from 'molyxuser'@localhost identified by '123456';
创建一个针对molyx库具有所有权限,可从任意IP登录的帐号molyxuser
grant all on molyx.* to 'molyxuser'@'%' identified by '123456';
六、备份与还原
备份molyx到文件molyx.sql
mysqldump -uusername -ppassword molyx > /your/path/molyx.sql
备份全部数据
mysqldump -uroot -ppassword --all-databases > /your/path/backup.sql
备份molyx并压缩
mysqldump -uusername -ppassword molyx | gzip > /your/path/molyx.sql.gz
将molyx.sql导入到数据库
mysql -uusername -ppassword molyx < /your/path/molyx.sql
将压缩文件molyx.sql.gz中数据恢复到molyx库
gzip < molyx.sql.gz | mysql -uusername -ppassword molyx
将文本数据导入数据库:
use test;
load data local infile 'filename' into table tablename;
检查所有的.myi文件
myisamchk /your/path/mysql/*.MYI
修复所有的.myi
myisamchk -r /your/path/mysql/*.MYI
七、其他
#mysql 显示和使用的mysql数据库。前面已经简单的提过用法;比如登录等
#mysqladmin 用来创建和维护mysql数据库的命令
#isamchk 是用来修复、检查和优化.ism后缀的数据库文件
#mysqldump 是用于备份数据库
#myisamchk 用来修复.myi后缀的数据库文件
1. 字段类型
- INT[(M)] 型: 正常大小整数类型
- DOUBLE[(M,D)] [ZEROFILL] 型: 正常大小(双精密)浮点数字类型
- DATE 日期类型:支持的范围是1000-01-01到9999-12-31。MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列
- CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度
- BLOB TEXT类型,最大长度为65535(2^16-1)个字符。
- VARCHAR型:变长字符串类型
安装升级
emerge --config =dev-db/mysql-5.1.53
mysql_upgrade tool
2. mysqldump 命令的使用
备份和导出数据库
mysqldump -h database_ip -u Username -p --opt databasename > backup-file.sql
只导出数据库表结构
mysqldump -h database_ip -d -u Username -p databasename >database_structure.sql
只导出数据库中的某个表
mysqldump --opt --add-drop-table -u Username -p databasename tablename > dump.sql
如果不想手工输入密码 请使用–password 参数
mysqldump -h database_ip -u Username --password=123456 --opt databasename > backup-file.sql
mysqldump -h database_ip -d -u Username --password=123456 databasename >database_structure.sql
3. mysql 命令使用
将查询结果保存到文件
select title from book into outfile '/tmp/outfile.txt';
查找表中多余的重复记录,重复记录是根据某个字段(peopleId)来判断
select * from people where peopleId in (select peopleId from people group by
peopleId having count(peopleId) > 1);
查询表中不重复记录(排除重复记录)
select * from phome_ecms_wma where title in (select distinct title from phome_ecms_wma);
删除表中重复记录,重复记录是根据某个字段(title)来判断
select *,count(distinct title) INTO OUTFILE '/tmp/table.bak' from phome_ecms_wma group by title;
delete from phome_ecms_wma;
LOAD DATA INFILE '/tmp/table.bak' REPLACE INTO TABLE phome_ecms_wma character set utf8;
查询数据库当前编码
show variables like 'character_set%';
修改表字段类型
alter table table_name change last_action last_action datetime NOT NULL default '0000-00-00 00:00:00';
给表添加一个新字段
ALTER TABLE host ADD ks_mac VARCHAR(100);
从表中删除一个字段
ALTER TABLE table_name DROP field_name;
重命名表
alter table t1 rename t2;
给字段加索引
alter table tablename add index 索引名 (字段名1[,字段名2 …]);
alter table tablename add index emp_name (name);
加主关键字的索引
alter table tablename add primary key(id);
加唯一限制条件的索引
alter table tablename add unique emp_name2(cardnumber);
删除某个索引
alter table tablename drop index emp_name;
远程访问mysql 设置
GRANT ALL PRIVILEGES ON database_test.* to root@192.168.1.9 IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
往表中加入记录
insert into mytable values ('test','m');
用文本方式将数据装入数据库表中(例如 d:\mysql.txt)
load data local infile 'd:/mysql.txt' into table mytable;
导入.sql文件命令(例如 d:\mysql.sql)
use database;
source d:/mysql.sql;
若要给此用户赋予他在相应对象上的权限的管理能力,可在grant后面添加with grant option选项。而对于用插入User表添加的用户,Password字段应用password函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用revoke操作。以下是常用权限的解释:
全局管理权限
- FILE:在MySQL服务器上读写文件。
- PROCESS:显示或杀死属于其它用户的服务线程。
- RELOAD:重载访问控制表,刷新日志等。
- SHUTDOWN:关闭MySQL服务。
数据库/数据表/数据列权限
- ALTER:修改已存在的数据表(例如增加/删除列)和索引。
- CREATE:建立新的数据库或数据表。
- DELETE:删除表的记录。
- DROP:删除数据表或数据库。
- INDEX:建立或删除索引。
- INSERT:增加表的记录。
- SELECT:显示/搜索表的记录。
- UPDATE:修改表中已存在的记录。
特别的权限
- ALL:允许做任何事(和root一样)。
- USAGE:只允许登录–其它什么也不允许做.