MySQL 5.1 Reference Manual
http://dev.mysql.com/doc/refman/5.1/en/
Including MySQL Cluster NDB 6.X/7.X Reference Guide
MySQL 5.1参考手册
http://dev.mysql.com/doc/refman/5.1/zh/index.html
这是 MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com 。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。
This translation was done by MySQL partner GreatLinux , Beijing, People's Republic of China. GreatLinux Inc. 北京万里开源软件有限公司在全国范围提供MySQL产品相关的商务及 技术方面的咨询与支持服务。垂询请致电:8610-65694500,或发送邮件至:sales@greatlinux.com.
摘要
这是MySQL参考手册 它涉及MySQL 5.1至5.1.2-alpha版本。
文档生成于: 2005-11-15
MySQL 5.1参考手册
- 前言
- 1. 一般信息
- 2. 安装MySQL
- 3. 教程
- 4. MySQL程序概述
- 5. 数据库管理
- 6. 中的复制
- 7. 优化
- 8. 客户端和实用工具程序
- 9.语言结构
- 10. 字符集支持
- 11. 列类型
- 12. 函数和操作符
- 13. SQL语句语法
- 14. 插件式存储引擎体系结构
- 15. 存储引擎和表类型
- 16. 编写自定义存储引擎
- 17. MySQL簇
- 18. 分区
- 19. 中的空间扩展
- 20. 存储程序和函数
- 21. 触发程序
- 22. 视图
- 23. INFORMATION_SCHEMA信息数据库
- 24. 精度数学
- 25. API和库
- 26. 连接器
- 27. 扩展MySQL
- A. 问题和常见错误
- B. 错误代码和消息
- C. 感谢
- D. MySQL变更史
- E. 移植到其他系统
- F. 环境变量
- G. 正则表达式
- H. Limits in MySQL
- I. 特性限制
- J. GNU通用公共许可
- K. MySQL FLOSS许可例外
- 索引
这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com 。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。
MySQL 5.1 Reference Manual
http://dev.mysql.com/doc/refman/5.1/en/
Including MySQL Cluster NDB 6.X/7.X Reference Guide
- Preface, Notes, Licenses
- 1 General Information
- 2 Installing and Upgrading MySQL
- 3 Tutorial
- 4 MySQL Programs
- 5 MySQL Server Administration
- 6 Backup and Recovery
- 7 Optimization
- 8 Language Structure
- 9 Internationalization and Localization
- 10 Data Types
- 11 Functions and Operators
- 12 SQL Statement Syntax
- 13 Storage Engines
- 14 High Availability and Scalability
- 15 MySQL Enterprise Monitor
- 16 Replication
- 17 MySQL Cluster NDB 6.X/7.X
- 18 Partitioning
- 19 Stored Programs and Views
- 20 INFORMATION_SCHEMA Tables
- 21 Connectors and APIs
- 22 Extending MySQL
- A MySQL 5.1 Frequently Asked Questions
- B Errors, Error Codes, and Common Problems
- C MySQL Change History
- D Restrictions and Limits
- Index
- Standard Index
- C Function Index
- Command Index
- Function Index
- INFORMATION_SCHEMA Index
- Transaction Isolation Level Index
- JOIN Types Index
- Operator Index
- Option Index
- Privileges Index
- SQL Modes Index
- Status Variable Index
- Statement/Syntax Index
- System Variable Index
mysql doc
username
siemens800@msn.com
siemens800@126.com
passwd
密码必须包含一个大写字母和一个数字,至少8为字符,fuck,shit,oracle
http://imysql.cn/taxonomy/term/22
http://user.qzone.qq.com/170475387/blog/145
http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html
MySQL InnoDB 中文手册 http://doc.itchinese.com/database/innodbzh/index.html
MySQL 3.2 在线中文手册
MySQL 4.0 在线中文手册
MySQL 5.0 在线英文手册
MySQL 5.1 离线英文手册 D:/mysql5/Docs/manual.chm
MySQL 5.1 在线中文手册
http://imysql.cn/docs/MySQL_51_zh/mysql_51.html
MySQL 5.1 在线英文手册
http://imysql.cn/docs/MySQL_51_en/mysql_51.html
MySQL 5.0 GUI 工具下载
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQLGUITools/mysql-gui-tools-5.0r12-linux-i386.tar.gz
MySQL innotop 分析工具
[mysql@sctssitdb01 ~]# su - mysql
[mysql@sctssitdb01 ~]$ innotop -u****** -p****** -h127.1
输入? 查看帮助文档
Switch to a different mode:
A Dashboard I InnoDB I/O Info Q Query List
B InnoDB Buffers K InnoDB Lock Waits R InnoDB Row Ops
C Command Summary L Locks S Variables & Status
D InnoDB Deadlocks M Replication Status T InnoDB Txns
F InnoDB FK Err O Open Tables U User Statistics
Actions:
d Change refresh interval q Quit innotop
k Kill a query's connection r Reverse sort order
n Switch to the next connection s Choose sort column
p Pause innotop x Kill a query
Other:
TAB Switch to the next server group / Quickly filter what you see
! Show license and warranty = Toggle aggregation
# Select/create server groups @ Select/create server connections
$ Edit configuration settings \ Clear quick-filters
Press any key to continue
输入d interval 间隔显示速度 1s
再输D 检查有无deadlock
MySQL 5 下载
http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.10-winx64.zip
http://download.mysql.cn/download_file/zip/5.0/mysql-noinstall-5.0.22-win32.zip
http://mysql.ntu.edu.tw/Downloads/MySQL-5.0/mysql-noinstall-5.0.67-win32.zip
http://mysql.ntu.edu.tw/Downloads/MySQL-5.0/mysql-5.0.67-linux-i686-glibc23.tar.gz
http://mysql.ntu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.29-rc-linux-i686-glibc23.tar.gz
ftp://mirror.csclub.uwaterloo.ca/mysql/Downloads/MySQL-5.4/mysql-5.4.1-beta-win32.msi
http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-devel-5.6.10-1.rhel5.x86_64.rpm
http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.10-linux-glibc2.5-x86_64.tar.gz
http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-server-5.6.10-1.rhel5.x86_64.rpm
http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-embedded-5.6.10-1.rhel5.x86_64.rpm
ftp://mirror.csclub.uwaterloo.ca/mysql/Downloads/MySQL-5.4/mysql-noinstall-5.4.1-beta-win32.zip
ftp://mirror.csclub.uwaterloo.ca/mysql/Downloads/MySQL-5.4/mysql-essential-5.4.1-beta-win32.msi
MySQL 6 下载
http://dev.mysql.com/downloads/mysql/6.0.html
ftp://ftp.stu.edu.tw/pub/Unix/Database/Mysql/Downloads/MySQL-6.0/mysql-noinstall-6.0.0-alpha-win32.zip
mysql install
mysql install for linux / RHEL 5.5 x64 / MySQL-server-5.6.10-1.rhel5.x86_64.rpm
[root@Loadrunner_19 ~]# which mysql
/usr/bin/which: no mysql in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@Loadrunner_19 ~]# whereis mysql
mysql: /usr/share/mysql
[root@Loadrunner_19 ~]# rpm -qa | grep sql
sqlite-3.3.6-5
sqlite-3.3.6-5
postgresql-libs-8.1.18-2.el5_4.1
postgresql-libs-8.1.18-2.el5_4.1
python-sqlite-1.1.7-1.2.1
sqlite-devel-3.3.6-5
[root@Loadrunner_19 ~]# chkconfig --list | grep mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@Loadrunner_19 ~]# service mysql status
MySQL is not running [FAILED]
[root@Loadrunner_19 soft]# rpm -ivh MySQL-server-5.6.10-1.rhel5.x86_64.rpm
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
2013-03-19 16:28:42 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2013-03-19 16:28:42 28975 [Note] InnoDB: The InnoDB memory heap is disabled
2013-03-19 16:28:42 28975 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2013-03-19 16:28:42 28975 [Note] InnoDB: Compressed tables use zlib 1.2.3
2013-03-19 16:28:42 28975 [Note] InnoDB: CPU does not support crc32 instructions
2013-03-19 16:28:42 28975 [Note] InnoDB: Using Linux native AIO
2013-03-19 16:28:42 28975 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2013-03-19 16:28:42 28975 [Note] InnoDB: Completed initialization of buffer pool
2013-03-19 16:28:42 28975 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2013-03-19 16:28:42 28975 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2013-03-19 16:28:42 28975 [Note] InnoDB: Database physically writes the file full: wait...
2013-03-19 16:28:42 28975 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2013-03-19 16:28:42 28975 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2013-03-19 16:28:43 28975 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2013-03-19 16:28:43 28975 [Warning] InnoDB: New log files created, LSN=45781
2013-03-19 16:28:43 28975 [Note] InnoDB: Doublewrite buffer not found: creating new
2013-03-19 16:28:43 28975 [Note] InnoDB: Doublewrite buffer created
2013-03-19 16:28:43 28975 [Note] InnoDB: 128 rollback segment(s) are active.
2013-03-19 16:28:43 28975 [Warning] InnoDB: Creating foreign key constraint system tables.
2013-03-19 16:28:43 28975 [Note] InnoDB: Foreign key constraint system tables created
2013-03-19 16:28:43 28975 [Note] InnoDB: Creating tablespace and datafile system tables.
2013-03-19 16:28:43 28975 [Note] InnoDB: Tablespace and datafile system tables created.
2013-03-19 16:28:43 28975 [Note] InnoDB: Waiting for purge to start
2013-03-19 16:28:43 28975 [Note] InnoDB: 1.2.10 started; log sequence number 0
A random root password has been set. You will find it in '/root/.mysql_secret'.
2013-03-19 16:28:43 28975 [Note] Binlog end
2013-03-19 16:28:43 28975 [Note] InnoDB: FTS optimize thread exiting.
2013-03-19 16:28:43 28975 [Note] InnoDB: Starting shutdown...
2013-03-19 16:28:45 28975 [Note] InnoDB: Shutdown completed; log sequence number 1625977
2013-03-19 16:28:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2013-03-19 16:28:45 28998 [Note] InnoDB: The InnoDB memory heap is disabled
2013-03-19 16:28:45 28998 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2013-03-19 16:28:45 28998 [Note] InnoDB: Compressed tables use zlib 1.2.3
2013-03-19 16:28:45 28998 [Note] InnoDB: CPU does not support crc32 instructions
2013-03-19 16:28:45 28998 [Note] InnoDB: Using Linux native AIO
2013-03-19 16:28:45 28998 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2013-03-19 16:28:45 28998 [Note] InnoDB: Completed initialization of buffer pool
2013-03-19 16:28:45 28998 [Note] InnoDB: Highest supported file format is Barracuda.
2013-03-19 16:28:45 28998 [Note] InnoDB: 128 rollback segment(s) are active.
2013-03-19 16:28:45 28998 [Note] InnoDB: 1.2.10 started; log sequence number 1625977
2013-03-19 16:28:45 28998 [Note] Binlog end
2013-03-19 16:28:45 28998 [Note] InnoDB: FTS optimize thread exiting.
2013-03-19 16:28:45 28998 [Note] InnoDB: Starting shutdown...
2013-03-19 16:28:47 28998 [Note] InnoDB: Shutdown completed; log sequence number 1625987
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
Also, the account for the anonymous user has been removed.
In addition, you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This is strongly recommended for production servers.
See the manual for more instructions.
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
New default config file was created as /usr/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
mysql noinstall for win / windows 2003 x64 / mysql-noinstall-5.1.53-win32.zip
mysql-noinstall.zip免安装版的优化配置和精简 / mysql-noinstall-5.1.53-win32.zip
http://down.chinaz.com/server/201111/1333_1.htm
1.准备工作
下载mysql的最新免安装版本mysql-noinstall-5.1.53-win32.zip,解压缩到相关目录,如:d:\\ mysql-noinstall-5.1.53-win32。这个就是mysql的根目录了。
2.配置
在根目录下有几个文件如下:
- my-small.ini (这是针对一个小内存(〈= 64MB)的系统,MySQL 只会被时不时地用一下,很重要的是 mysqld 守护进程不会使用很多资源。)
- my-medium.ini (这是针对一个小内存(32M- 64M)系统的,MySQL 扮演了一个比较重要的部分,或者当系统达到 128M 后 MySQL 被用来与其它程序(如一个 Web 服务器)一起使用。)
- my-large.ini (这是针对一个内存 = 512M 的大系统,系统主要运行 MySQL)
- my-huge.ini (这是针对一个内存为 1G – 2G 的大系统,系统主要运行 MySQL)
- my-innodb-heavy-4G.ini (这是一个针对 4G 内存系统(主要运行只有 InnoDB 表的 MySQL 并使用几个连接数执行复杂的查询)的 MySQL 配置文件例子)
对应自己的配置,自己选择下,其他的就删除吧。然后重命名成my.ini。编辑my.ini,在[mysqld]节点下增加如下几句:
basedir= D:/mysql-noinstall-5.1.53-win32 #根目录
datadir= D:/mysql-noinstall-5.1.53-win32/data #数据文件存放目录
3.安装服务
cmd:进入mysql的根目录\bin:
mysqld --install MySQL
这样用默认的 MySQL 为名称添加了一个windows服务。要移除mysql服务:
mysqld –remove MySQL
设置服务为自动启动:
sc config MySQL start= auto
4.启动与关闭
cmd:
net start MySQL --启动
net stop MySQL --关闭
mysql启动后。在任务管理器当中可以看到mysqld.exe这个进程。说明mysql已经安装好了。并且已经成功的启动!
5.精简:
如果你觉得mysql目录过于庞大的话请看。根目录下可以只留下my.ini和bin,data,share目录,其余全部删除。bin目录下可以把.pdb的文件全部删除。
6.初始化数据库:
由于mysql默认的root的密码为空并且只能本机登录,做如下修改:
cmd:进入mysql的根目录\bin:
mysql -uroot
这时进入了mysql命令行界面,继续输入:
mysql< use mysql;
mysql< delete from user;
mysql< grant all on *.* to root@'%' identified by "root" with grant option;
mysql< flush privileges;
mysql< quit;
这样就给root用户赋予了初始密码"root",并且可以不限制本机登录。
7.乱码问题:
修改my.ini文件,找到[mysqld],在下方加上:
character-set-server = utf8 #mysql5.5开始
default-character-set = utf8 #mysql5.5以前
找到[client],在下方加上:
default-character-set = utf8
mysql file type
D:\Program Files\MySQL\mysql-5.0.67-win32\data\mysql\
MySQL文件类型
------------------------------------------------------------------------------------------------------------------
文件类型 文件名扩展名 文件内容
样式文件 .frm 描述表的结构(它的列、列类型、索引等)。
数据文件 .ISD(ISAM) 或.MYD(MyISAM) 包含数据文件上的所有索引的索引树。
索引文件 .ISM(ISAM) 或.MYI(MyISAM) 该索引文件依赖表是否有索引而存在。
----------------------------------------------------------------------------------------------------------------
mysql jdbc driver
http://mysql.oss.eznetsols.org/Downloads/Connector-J/mysql-connector-java-5.1.6.zip
mysql envionment variables
文件:mysql_home.bat
内容:
@echo off
@echo 系统变量[old]
path
tskill explorer
setx MYSQL_HOME D:\MYSQL5
set MYSQL_HOME=D:\MYSQL5
set Path=%MYSQL_HOME%\bin;%path%
@echo 系统变量[new]
path
cmd
MySQL startup.bat
http://rockjava.iteye.com/blog/234585
如果你的MySql没有安装成系统服务的话,每次启动MySql还跑到服务里去启动,麻烦!呵呵。
1、安装版的MySql
启动:
StartMySQL.bat
net start mysql
关闭:
ShutdownMySQL.bat
net stop mysql
加上pause,可以查看是否启动或停止成功 :
net start mysql
pause
net stop mysql
pause
记录启动日志:
net start mysql> > mysql.log
2、非安装版MySql:
StartMySQL.bat
%mysql-path%\bin\mysqld -u root -p ******
其中-u代表用户名,-p代表用户密码
直接关闭dos窗口就可以关闭MySql服务了。
mysql install.bat ( Windows Servises )
d:\mysql5\bin\mysqld -remove
d:\msyql5\bin\mysqld -install
d:\mysql5\bin\net start mysql
d:\mysql5\bin\mysql -h localhost -u root -p
mysql remove.bat ( Windows Servises )
d:\mysql5\bin\net stop mysql
d:\msyql5\bin\mysqld -remove
MySQL Command
1.远程mysql D:\>mysql -h 192.168.116.159 -P 3306 -u root -p 123
1.进入mysql D:\>cd /mysql5/bin 或 D:\>cd \mysql5\bin 或 D:>cd \m*
1.加载MySQL D:\>mysql5\bin\mysqld-nt.exe 或 D:\>mysql5\bin\mysqld-nt --install 或 D:>\mysql5\mysqld-nt MYSQL
1.卸载MySQL D:\mysql5\mysqld-nt --remove
1.进入数据库 D:\mysql5\mysql -u root 或 D:\mysql5 -u root -p -h 127.0.0.1
1.显示库变量 mysql>show variables; //mysql show http://blog.sina.com.cn/s/blog_7e4015380100v7x2.html
1.显示数据库 mysql>show databases; 或D:\mysql5>mysqlshow -uroot (使用root登陆才可见mysql库)
1.查看库版本
查看mysql版本的四种方法
http://www.cnblogs.com/end/archive/2011/10/18/2216461.html[root@localhost bin]# /opt/lampp/bin/mysql
mysql>select version();
或 mysql>\s
或 mysql>status
或 [root@localhost bin]# /opt/lampp/bin/mysql -V
或 [root@localhost bin]# /opt/lampp/bin/mysql --help | grep Dist
2.创建数据库 mysql>create database db;
2.删除数据库 mysql>drop database db; 或 mysql->drop database if exists db;
3.选择数据库 mysql>use db
4.查看用户表 mysql>select user();
4.本地导脚本 mysql>source d:/person.sql
4.创建数据表
mysql>create table mytable
(
id int(3) auto_increment not null primary key,
name char(20)not null,
address varchar(50) default '深圳',
sex char(1)not null ,
year date not null,
);
4.删除数据表 mysql>drop table mytable;
5.显示数据表 mysql>show tables;
5.统计表总数 mysql>select count(*) tables;
5.显示表引擎 mysql>show engines;
5.统计引擎数 mysql>select count(*) engines;
6.显示表结构 mysql>describe mytable; 或mysql->desc mytable;
7.查询表内容 mysql>select * from mytable;
7.统计表行数 mysql>select count(*) from mytable;
8.增加数据表 mysql>insert into mytable values('','summer','深圳一中','男''1983-08-24');
9.增加表字段 mysql>alter table mytable add name varchar(20)not null;
10.删除表字段mysql>alter table mytable drop name;
11.查看时间 mysql>select now(); 或 mysql> select current_date; 或 mysql> select current_date();
12.算术计算 mysql>select 8*9;
13.mysql帮助 mysql>help 或?
14.退出数据库mysql>quit 或exit 或q
15.开启zip版mysql服务D:\Program Files\MySQL\mysql-5.0.67-win32>net start mysql
16.关闭zip版mysql服务D:\Program Files\MySQL\mysql-5.0.67-win32>net stop mysql
17.更改数据库mysql密码
D:\Program Files\mysql-5.0.27-win32 noinstall\bin\mysql -u root -p
mysql>show databases;
mysql>use mysql;
mysql>select * from user;
mysql>update user set password='root' where user='root';
17.更改数据库root密码
Mysql >set password for root@localhost=password(‘’);
18.
创建权限select,insert,update,delete,create,drop 14个
,index,alter,grant,references,reload,shutdown,process,file
权限信息user、db、host、tables_priv和columns_priv表被存储在mysql数据库中(即在名为mysql的数据库中)。
权限参考:http://kapoc.blogdriver.com/kapoc/1277618.html
http://hi.baidu.com/kowstudio/blog/item/82458bafc61c0acf7dd92a5d.html
drop 如果你将mysql数据库的drop权限授予一个用户,该用户能抛弃存储了MySQL存取权限的数据库!
attention: 对用户授权的语句可以多次运行,即多次创建同一个据有不同权限的用户
example: root用户创建name="etang",pwd="etang"并授权:增删改查,禁止建表和删表@localhost
mysql>grant select,insert,update,delete on *.* to etang@localhost identified by 'etang';
annotate :*.* 表示所有数据库.所有表;etang@% 表示任何地址连接
example:
root用户创建:用户custom
从主机localhost、server.domain和whitehouse.gov连接
从localhost存取bankaccount数据库
从whitehouse.gov存取expenses数据库
从所有3台主机存取customer 数据库
从所有3台主机上使用口令stupid。
shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON bankaccount.* TO custom@localhost IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON expenses.* TO custom@whitehouse.gov IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON customer.* TO custom@'%' IDENTIFIED BY 'stupid';
test ok:
DOS输入mysql -u etang -p 或 mysql -h localhost -u etang -p
Enter Password:etang
Welcome to the MySQL montitor...
其他语句:
select "hello";
select "This\nIS\nFour\nlins";
首先要说明一点的是:一般情况下,修改MySQL密码是需要有mysql里的root权限的,这样一般用户是无法更改密码的,除非请求管理员帮助修改。
MySQL修改密码方法总结
http://www.iteye.com/wiki/topic/204868
http://hi.baidu.com/ykstar/blog/item/528b6390de4ea08da977a4bd.html
方法一
使用phpMyAdmin (图形化管理MySql数据库的工具),这是最简单的,直接用SQL语句修改mysql数据库库的user表,不过别忘了使用PASSWORD函数,插入用户用Insert命令,修改用户用Update命令,删除用Delete命令。在本节后面有数据表user字段的详细介绍。
方法二
使用mysqladmin。输入
mysqladmin -u root -p oldpassword passwd
执行这个命令后,需要输入root的原密码,这样root的密码将改为newpasswd。同样,把命令里的root改为你的用户名,你就可以改你自己的密码了。 当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,那么这种方法就是无效的,而且mysqladmin无法把密码清空。
下面的方法都在mysql提示符下使用,且必须有mysql的root权限:
方法三
mysql> INSERT INTO mysql.user (Host,User,Password) VALUES (\'%\',\'system\', PASSWORD(\'manager\'));
mysql> FLUSH PRIVILEGES
确切地说这是在增加一个用户,用户名为system,密码为manager。注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES来执行确认。
方法四
和方法三一样,只是使用了REPLACE语句
mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES(\'%\',\'system\',PASSWORD(\'manager\'));
mysql> FLUSH PRIVILEGES
方法五
使用SET PASSWORD语句
mysql> SET PASSWORD FOR system@\"%\" = PASSWORD(\'manager\');
你也必须使用PASSWORD()函数,但是不需要使用FLUSH PRIVILEGES来执行确认。
方法六
使用GRANT ... IDENTIFIED BY语句,来进行授权。
mysql> GRANT USAGE ON *.* TO system@\"%\" IDENTIFIED BY \'manager\';
这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES来执行确认。
注 :PASSWORD()函数作用是为口令字加密,在程序中MySql自动解释。
方法七
D:\>mysql\bin>mysqladmin -u root -p 123 password 456
方法八
mysql root密码忘了怎么办?
http://database.group.iteye.com/group/blog/432114
http://www.dzxiaoshuo.com
mysql忘记root密码该怎么办当忘记MySQL的root密码的时候,可以进行如下的步骤重新设置
首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于 没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进 程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
一、LINUX
1>修改MySQL的登录设置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- skip-name-resolve
- skip-grant-tables
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
skip-grant-tables
保存并且退出vi。
2>重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
3>登录并修改MySQL的root密码
# /usr/bin/mysql . mysql> USE mysql ; mysql> UPDATE user SET Password = password('new-password') WHERE User = 'root' ; mysql> flush privileges ; mysql> quit
4>将MySQL的登录设置修改回来
# vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables 删除
保存并且退出vi。
5>重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
二、WINDOWS
1>以系统管理员身份登陆系统。
2>打开cmd—–net start 查看mysql是否启动。启动的话就停止net stop mysql
.
3>我的mysql安装在d:\usr\local\mysql4\bin下。
4>跳过权限检查启动mysql.
d:\usr\local\mysql4\bin\mysqld-nt –skip-grant-tables
5>重新打开cmd。进到d:\usr\local\mysql4\bin下:
d:\usr\local\mysql4\bin\mysqladmin -uroot flush-privileges password “newpassword”
d:\usr\local\mysql4\bin\mysqladmin -u root -p shutdown 这句提示你重新输密码。
6>在cmd里net start mysql
7>搞定了。
附: MySQL4.1以上版本一种密码错误问题的解决方法
1 # SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
2 # FLUSH PRIVILEGES;
3,Mysql数据库修复
myisamchk -r -q d:\mysql\data\latin1\*
r代表修复
q代表快速
d:\mysql\data\latin1\*数据库里面 *代表里面的所有的文件
修改密码错误
Error 1045 : Access denied for user: 'root@localhost' (Using password: YES )
解决方法 :http://en.zj.cn/blog/8/8/archives/2008/3572.html
Mysql Show 命令详解
mysql qps算法
http://blog.163.com/zf_zhouf/blog/static/20009802620116693822950/
com_select :
当查询发生,而在缓存中没有命中(是对sql语句做检查,字符区分大小写)。此值加一。
当查询的数据发生变化时,比如某行被update了,那么同一个查询,也会认为没有命中,此值加一。
Qcache_hits:
当查询发生,在缓存中命中,此值加一。
Qcache_inserts:
有新的sql语句,则此值加一。(sql_no_cache时,此值不加)
当查询的数据发生变化时,比如某行被update了,那么同一个查询,也会认为是新查询,此值加一。
qps=com_select+qcache_hits
当sql语句在使用变量时,mysql认为不是新的sql语句,但是也不能命中,所以增加com_select,而对Qcache_hits和Qcache_inserts
不做变化。
show status like 'com_select'; -- 不带缓存的SQL查询次数统计
show status like 'qcache_hits'; -- 带缓存的SQL查询次数统计
http://hi.baidu.com/software_one/blog/item/10654cf9cfdda56f034f56c3.html
a. show tables或show tables from database_name; — 显示当前数据库中所有表的名称
b. show databases; — 显示mysql 中所有数据库的名称
c. show columns from table_name from database_name; 或show columns from database_name.table_name; — 显示表中列名称
d. show grants for user_name; — 显示一个用户的权限,显示结果类似于grant 命令
e. show index from table_name; — 显示表的索引
f. show status; — 显示一些系统特定资源的信息,例如,正在运行的线程数量
g. show variables; — 显示系统变量的名称和值
h. show processlist; — 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
在建链阶段出现这个 unauthenticated user 属正常现象,当用户正在建链时, show processlist 命令获取不到用户信息,因此显示 unauthenticated user, 对系统性能无影响
i. show table status; — 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
j. show privileges; — 显示服务器所支持的不同权限
k. show create database database_name; — 显示create database 语句是否能够创建指定的数据库
l. show create table table_name; — 显示create database 语句是否能够创建指定的数据库
m. show engies; — 显示安装以后可用的存储引擎和默认引擎。
n. show innodb status; — 显示innoDB存储引擎的状态
o. show logs; — 显示BDB存储引擎的日志
p. show warnings; — 显示最后一个执行的语句所产生的错误、警告和通知
q. show errors; — 只显示最后一个执行语句所产生的错误
r. show [storage] engines; –显示安装后的可用存储引擎和默认引擎
s. show procedure status –显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过
程名称,创建时间等
t. show create procedure sp_name –显示某一个存储过程的详细信息
待测任务 :
http://www.matrix.org.cn/thread.shtml?topicId=229efa5f-54b5-11dc-af81-f34262335978&forumId=38
http://www.wang48.com/jishubaodian/jishubaodianview.jsp?jsd_id=517
http://www.wang48.com/database/?nowpage=1
MYSQL 字符集问题
http://www.blogjava.net/rabbit/archive/2008/03/28/189251.html
MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation)。
对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table)和连接(connection)。
Error in my_thread_global_end(): 1 threads didn’t exit
windows 2003企业版,php5.2.2,MySQL(和PHP搭配之最佳组合) 5.037,wordpress中文版2.1.2
成功配置后,在主页和管理页经常出现Error in my_thread_global_end(): 1 threads didn’t exit。
解决 http://www.cncms.com.cn/mysql/4920.htm
查询发现是php5.22和MySQL(和PHP搭配之最佳组合) 5.037问题,需要下载php5.2.1,把libMySQL(和PHP搭配之最佳组合) .dll覆盖php5.2.2的libMySQL(和PHP搭配之最佳组合) .dll,问题解决。
SQL的identity属性作用: 自动增长列 identity(起始值,步长)
http://blog.csdn.net/didostream/archive/2007/12/17/1944345.aspx
--建表,很简单,就不说了
CREATE TABLE [Photos] (
[PhotoID] [int] IDENTITY (1, 1) NOT NULL ,
[AlbumID] [int] NOT NULL ,
[Caption] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
)
--清空表
truncate table dbo.Photos
GO
--打开容许对被IDENTITY修饰的列进行插入的开关,默认示关闭的,也就是不容许
set IDENTITY_INSERT dbo.Photos on
insert into Photos(PhotoID,AlbumID,Caption)values(1,1,'maql1')
insert into Photos(PhotoID,AlbumID,Caption)values(1,2,'maql2')
insert into Photos(PhotoID,AlbumID,Caption)values(1,3,'maql3')
insert into Photos(PhotoID,AlbumID,Caption)values(2,1,'zhangr1')
insert into Photos(PhotoID,AlbumID,Caption)values(2,2,'zhangr2')
insert into Photos(PhotoID,AlbumID,Caption)values(2,3,'zhangr3')
go
--关闭IDENTITY_INSERT开关,也就是不容许对这一列进行插入,而是让其自动增长
set IDENTITY_INSERT dbo.Photos off
insert into Photos(AlbumID,Caption)values(1,'maql1')
insert into Photos(AlbumID,Caption)values(2,'maql2')
insert into Photos(AlbumID,Caption)values(3,'maql3')
insert into Photos(AlbumID,Caption)values(1,'zhangr1')
insert into Photos(AlbumID,Caption)values(2,'zhangr2')
insert into Photos(AlbumID,Caption)values(3,'zhangr3')
insert into Photos(AlbumID,Caption)values(3,'maql4')
go
JDK、Tomcat和MySQL的绿色安装方法
http://www.blogjava.net/afunms/archive/2007/10/12/152455.html
JDK、Tomcat和MySQL的绿色安装方法。
要制作web系统setup一键安装程序,必须先解决JDK、Tomcat和MySQL三者的绿色
安装问题。今天研究了半天,终于有了结果。
现在假设我们要把这三者安装到C:\SourceView目录下。
1. JDK。Copy安装好的JDK,C:\Program Files\Java\jdk1.5.0_11到
C:\SourceView下就可以了。
2. Tomcat。Copy安装好的Tomcat到C:\Sourceview下。然后修改bin下的startup.bat
在文件顶部加上
set CATALINA_HOME=C:\SourceView\tomcat
set JAVA_HOME=C:\SourceView\jdk1.5.0_11
3. MySQL。最麻烦的就是MySQL了。Copy安装好的MySQL到C:\SourceView下。
首先修改my.ini.
basedir=C:/sourceview/MySQL/
datadir=C:/sourceview/MySQL/data/
然后,执行
C:\sourceview\MySQL\bin>mysqld-nt --install MySQL5.0
--defaults-file="C:\sourceview\MySQL\my.ini"
安装MySQL服务,服务名MySQL5.0。
C:\windows\system32\net start MySQL5.0
启动MySQL服务。
这样,以后只要copy SourceView到需要安装的地方,然后修改一下几点文件,这三者就能用了。
MySQL分页SQL和ORACLE分页SQL
http://hi.baidu.com/82826200/blog/item/a4608ace42ab630692457e9c.html
MySQL limit 分页
http://blog.163.com/xiaosanshaoli@126/blog/static/2979216320085251039537/
1. 标准查询语句:
select * from table(表名) limit startPos,pageSize
小结:
1.startPos:定义当前页起始位置 注意:当前页的起始位置只能在当前页确定之后才能定义;
2.pageSize:定义每页显示数据的条数
3.如果给定2个参数,第一个指定要返回的第一行的偏移量,第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。
如: select * from table LIMIT 5,10; 这个查询出来的是第6到15之间的10条数据
如果给定一个参数,它指出返回行的最大数目。
如: select * from table LIMIT 5; 这个查询出来的是前5条数据
(LIMIT n等价于LIMIT 0,n)
MYSQL 永远删除表中第一行的数据
-- delete from 表名 where 1 order by 字段名 limit 1;
MySQL删除表中大批量的数据
http://www.javayou.com/diary/146633154
假设有一个表(osc_logs)有2000万条记录,我们要在业务不停止的情况下删除其中status=1的所有记录,差不多有1800万条,直接执行 DELETE FROM osc_logs WHERE status=1 会发现删除失败,因为lock wait timeout exceed的错误。因为这条语句所涉及的记录数太多了,因此我们可以分批来删除,比如每10000条进行删除,那么我们可以利用MySQL这样的语句来完成
DELETE FROM osc_logs WHERE status=1 ORDER BY log_id LIMIT 10000;
然后分多次执行就可以把这1800万条记录成功删除。
mysql backup & come back 备份和恢复
http://www.eliuzd.com/blog/article.asp?id=320
1。导出一个数据库
mysqldump -u用户名 -p密码 数据库名 > 导出的文件名
D:\mysql5\bin>mysqldump -u root -p root ssh > ssh.sql
2。导出数据库的一个表
mysqldump -u用户名 -p密码 数据库名 表名 > 导出的文件名
D:\mysql5\bin>mysqldump -u root -p root ssh > ssh.sql
3。导入数据到mysql5
d:\mysql5\bin>mysql -uroot -p
mysql>use ssh;
mysql>source d:\ssh.sql
Ubuntu使用cron自动备份mysql数据库
http://bbisky.iteye.com/blog/87519
ubuntu server上运行了一个discuz论坛,今天想起来备份一下数据库,原来一直没有备份过 猛吧!!呵呵。想到干脆来个自动备份,根据论坛贴子不是太多,一周备份一次吧。 下面是备份脚本文件 #!/bin/sh /usr/bin/mysqldump -ueceroot -p88558855 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x airclass_BBS | gzip > ~/mysqlbackup/airclass_BBS_$(date +%F).gz 使用了gzip压缩后保存到指定的位置,并用日期命名文件。在终端下执行了一下,没有问题。 然后把脚本放到/etc/cron.weekly目录,让他 每星期执行一次。原来也弄过一次,始终没有正确执行过,后来发现原来是脚本写得有问题,原来是在windows下用记事本写的,然后传到服务器上。用$ ./cuc-db-backup 执行了一下,发现有错,提示#!/bin/sh^M: interper…什么的错误,原来是文件格式的问题,没办法,直接在linux终端重抄了一遍文件,OK,没问题了!等着自动备份吧 :-P 顺便研究了一下ubuntu的crontab文件,内容如下: # m h dom mon dow user command 17 * * * * root run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily 47 6 * * 7 root test [...]
MySQL中的各种JOIN
MySQL JOIN(CROSS JOIN, INNER JOIN, LEFT /RIGHT[OUTER] JOIN)
http://hi.baidu.com/alex_wang58/blog/item/0e98dcf0709f66c67831aae3.html
1. 笛卡尔积(交叉连接)
在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','
如
SELECT * FROM table1 CROSS JOIN table2
SELECT * FROM table1 JOIN table2
SELECT * FROM table1,table2
由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE
, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢。
一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN
2. 内连接INNER JOIN
在MySQL中把INNER JOIN叫做等值连接,即需要指定等值连接条件
在MySQL中CROSS和INNER JOIN被划分在一起,不明白。
参看MySQL帮助手册
http://dev.mysql.com/doc/refman/5.0/en/join.html
join_table:
table_reference [INNER | CROSS] JOIN table_factor [join_condition]
3. MySQL中的外连接,分为左外连接和右连接,
即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。
a. LEFT [OUTER] JOIN
SELECT column_name FROM table1 LEFT [OUTER] JOIN table2 ON table1.column=table2.column
除了返回符合连接条件的结果之外,还需要显示左表中不符合连接条件的数据列,相对应使用NULL对应
b. RIGHT [OUTER] JOIN
SELECT column_name FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column=table2.column
RIGHT与LEFT JOIN相似不同的仅仅是除了显示符合连接条件的结果之外,还需要显示右表中不符合连接条件的数据列,相应使用NULL对应
--------------------------------------------
添加显示条件WHERE, ON, USING
1. WHERE子句
2. ON
3. USING子句,如果连接的两个表连接条件的两个列具有相同的名字的话可以使用USING
例如
SELECT <column_name> FROM <table1> LEFT JOIN <table2> USING (<column_name>)
连接多余两个表的情况
举例:
mysql> SELECT artists.Artist, cds.title, genres.genre
-> FROM cds
-> LEFT JOIN genres
-> ON cds.genreID = genres.genreID
-> LEFT JOIN artists
-> ON cds.artistID = artists.artistID;
或者
mysql> SELECT artists.Artist, cds.title, genres.genre
-> FROM cds
-> LEFT JOIN genres
-> ON cds.genreID = genres.genreID
-> LEFT JOIN artists
-> ON cds.artistID = artists.artistID
-> WHERE (genres.genre = 'Pop');
--------------------------------------------
另外需要注意的地方
在MySQL中涉及到多表查询的时候,需要根据查询的情况,想好使用哪种连接方式效率更高。
1. 交叉连接(笛卡尔积)或者内连接
[INNER | CROSS] JOIN
2. 左外连接LEFT [OUTER] JOIN或者右外连接RIGHT [OUTER] JOIN
注意指定连接条件WHERE, ON,USING.
--------------------------------------------
看懂MySQL手册定义的MySQL各种JOIN的用法 //看懂如下的定义方式
http://lveyo.iteye.com/blog/229879
为了备份虚拟主机的mysql数据库,只能用mysqldump导出到本地。
运行:
- mysqldump --opt -h192. 168.0 . 156 -uUsername -pPassword databaseName>database.sql
mysqldump --opt -h192.168.0.156 -uUsername -pPassword databaseName>database.sql
但由于数据库用户的权限不够,总显示:
- mysqldump: Got error: 1044 : Access denied for user 'Username' @ '%' to database 'databaseName' when using LOCK TABLES
mysqldump: Got error: 1044: Access denied for user 'Username'@'%' to database 'databaseName' when using LOCK TABLES
是没有LOCK TABLES的权限,于是查看mysqldump的帮助,加上参数--skip-lock-tables
- mysqldump --opt -h192. 168.0 . 156 -uUsername -pPassword --skip-lock-tables databaseName>database.sql
mysqldump --opt -h192.168.0.156 -uUsername -pPassword --skip-lock-tables databaseName>database.sql
备份成功!
mysql tools
http://www.iteye.com/news/1447
1. phpMyAdmin
phpMyAdmin是一个PHP写的MySql管理软件,它能够创建和删除 databases,创建/删除/改变 tables,删除/编辑/增加 fields,运行SQL statement,管理keys on fields. phpMyAdmin是基于web的开源软件。官网URL: http://www.phpmyadmin.net
2. HeidiSQL
HeidiSQL 有一个非常容易使用用户友好的界面,它允许你在windows桌面上管理和浏览MySql数据库。它的特点包括:生成的优秀的SQL-exports功 能,两个数据库表同步功能,管理用户权限,导入Text,CSV,HTML,XML等类型文件数据,通过舒服易用的表格显示数据等等。
HeidiSQL 是一个优秀的桌面MySql开源管理程序。
官网URL: http://www.heidisql.com
Screenshots: http://www.heidisql.com/screenshots.php
Download: http://www.heidisql.com
3. MySQL GUI Tools
MySQL GUI Tools 管理工具包括很多基本的功能,包括以下三个部分:
- MySQL Administrator
- MySQL Query Browser
- MySQL Migration Toolkit
支持多种操作系统平台: Windows/Mac/Linux
类型 : Desktop/ (GPL / commercial) Dual licensing.
官网URL: http://dev.mysql.com/downloads/gui-tools/
4. MyDB Studio
MyDB Studio 是一个Mysql Server端管理工具的集合,包括:SSH数据库链接工具,用户权限管理,服务器重启工具,MySql使用缓存重启工具,查看/中止服务端进程工具等。
官网URL: http://www.mydb-studio.com
Screenshots: http://www.mydb-studio.com/index.php?lang=en&p=2
下载Download: http://www.mydb-studio.com/index.php?lang=en&p=3
5. SQL Front
SQL-Front 是一个MySql数据库图形界面管理工具。它帮助你定义和管理数据库结构,导入数据,编辑数据等。
官网URL: http://www.sql-front.com
Screenshots: http://www.sql-front.com/screenshots.html
下载Download: http://www.sql-front.com/download.html
6. SQLyog MySQL GUI - Community Edition
一个同样优秀的MySql的图形界面工具。企业版有更多功能。
官网URL: http://www.webyog.com
http://www.jb51.net/article/9967.htm
文件:mysql 定时备份.bat
内容:
@echo off
set txt1=%date:~0,4%
::当前年
set txt2=%date:~5,2%
::当前月
set txt3=%date:~8,2%
::当前日
set txt4=%time:~0,2%
::当前小时
set txt5=%time:~3,2%
::当前分钟
set txt6=%time:~6,2%
::当前秒
set date=%txt1%%txt2%%txt3%
set time=%txt4%%txt5%%txt6%
echo --------------------------------------------------
echo -------------正在执行MySQL数据库备份--------------
echo --------------------------------------------------
echo ...
echo ...
echo 导出Database...
if exist %date%.sql del %date%.sql
c:\Progr*\mysql\bin\mysqldump --add-drop-table -c -u root -p-h localhost dbname >e:\%date%.sql
echo ...
echo ...
if exist dump%date%.7z del dump%date%.7z
echo 压缩文件...
7za.exe a -t7z dump%date%.7z %date%.sql -mx9
echo ...
echo ...
echo 删除临时文件
del %date%.sql
echo ...
echo ...
echo 备份完成!
pause
(3)Mysql:
http://kop.iteye.com/blog/253440
--查询出前10条记录(实际是就是从0开始)等价于: limit 0,10
select * from TableName limit 10
--查询出第10条(包括)开始的共20条记录(最先是从0开始)
select * from TableName limit 10,20
Linux下两个不同版本Mysql的安装实战(Mysql5和mysql4)
http://www.iteye.com/topic/203986
mysql*** -u用户名 -p旧密码 password 新密码 修改密码
grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
mysqldump --opt school>school.bbb 备份数据库:(命令在DOS的[url=file://mysql//bin]\\mysql\\bin[/url]目录下执行);注释:将数据库 school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
How to start / stop the MySQL service
http://bytes.com/topic/mysql/answers/704453-how-start-stop-mysql-service
- net stop MySQL
- net start MySQL
- # /etc/init.d/mysqld start
- # /etc/init.d/mysqld stop
- # /etc/init.d/mysqld restart
- # service mysqld start
- # service mysqld stop
- # service mysqld restart
mysql 备份还原
http://renxiangzyq.iteye.com/blog/666789
mysql -u root -p databasename<microerp-mysql .sql 导入表结构及数据
备份:mysqldump -u root -p dbcurr> 20090219.sql
mysqldump 备份命令
root 用户名(root管理员)
dbcurr 备份的数据库名;
> 备份符号
20090219.sql 备份的文件名
还原:
mysql -u root -p dbcurr< d:\bbb.sql
mysql 还原命令
root 用户名(root管理员)
dbcurr 备份的数据库名;
< 还原符号
首先要确保你的mysql 中有 microerp这个库,还原命令是不会自动建库了。
全过程:
mysql -uroot -pyoupwd
create database microerp;
use microerp;
source d:/microerp-mysql .sql;
--databases, -B: 用于备份多个数据库,如果没有该选项, mysql dump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysql dum把每个名 字都当作为数据库名。
--force, -f:即使发现sql错误,仍然继续备份
--host=host_name, -h host_name:备份主机名,默认为localhost
--no-data, -d:只导出表结构
--password[=password], -p[password]:密码
--port=port_num, -P port_num:制定TCP/IP连接时的端口号
--quick, -q:快速导出
--tables:覆盖 --databases or -B选项,后面所跟参数被视作表名
--user=user_name, -u user_name:用户名
--xml, -X:导出为xml文件
1.备份全部数据库的数据和结构
mysql dump -uroot -p123456 -A >F:\all.sql
2.备份全部数据库的结构(加 -d 参数)
mysql dump -uroot -p123456 -A -d>F:\all_struct.sql
3.备份全部数据库的数据(加 -t 参数)
mysql dump -uroot -p123456 -A -t>F:\all_data.sql
4.备份单个数据库的数据和结构(,数据库名mydb)
mysql dump -uroot -p123456 mydb>F:\mydb.sql
5.备份单个数据库的结构
mysql dump -uroot -p123456 mydb -d>F:\mydb.sql
6.备份单个数据库的数据
mysql dump -uroot -p123456 mydb -t>F:\mydb.sql
7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysql dump -uroot -p123456 mydb t1 t2 >f:\multables.sql
8.一次备份多个数据库
mysql dump -uroot -p123456 --databases db1 db2 >f:\muldbs.sql
还原部分分(1)mysql 命令行source方法 和 (2)系统命令行方法
1.还原全部数据库:
(1) mysql 命令行:mysql >source f:\all.sql
(2) 系统命令行: mysql -uroot -p123456 <f:\all.sql
2.还原单个数据库(需指定数据库)
(1) mysql >use mydb
mysql >source f:\mydb.sql
(2) mysql -uroot -p123456 mydb <f:\mydb.sql
3.还原单个数据库的多个表(需指定数据库)
(1) mysql >use mydb
mysql >source f:\multables.sql
(2) mysql -uroot -p123456 mydb <f:\multables.sql
4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
(1) mysql 命令行:mysql >source f:\muldbs.sql
(2) 系统命令行: mysql -uroot -p123456 <f:\muldbs.sql
mysql 导入
F:\soft\mysql-5.5.8-winx64\bin>输入mysql -u 用户名 -p 数据库名 < c:/test.sql
中间的空格是一个空格位。
同时使用200多MB的sql文件。
例如:
C:\Program Files\MySQL\bin>mysql -u root -p myrosz < c:/myro.sql
Enter password: ****
稍等一会,就可以导入数据表。
注意一点:数据库必须在本机存在,否则导入的时候将出错。
MySQL Performance Blog
Percona's MySQL & InnoDB performance and scalability blog
http://www.mysqlperformanceblog.com/
redhat mysql
[root@localhost mysql]# find / -name mysql -print
/var/lib/mysql
/var/lib/mysql/mysql
/usr/bin/mysql
/usr/lib/mysql
/usr/share/mysql
卸载redhat 5.2 自带mysql
rpm -qa | grep mysql
http://linux.chinaunix.net/bbs/thread-918196-1-1.html
卸载rpm mysql 时报错 error: Failed dependencies:
libmysqlclient.so.15 is needed by (installed) dovecot-1.0-1.2.rc15.el5.i386
libmysqlclient.so.15(libmysqlclient_15) is needed by (installed) dovecot-1.0-1.2.rc15.el5.i386
出现了依赖性的问题。
rpm -e mysql --nodeps
mysql存储字符串长度的问题
mysql5.0以上的版本:
1.一个汉字占多少长度与编码有关:
UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节
2.varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别
3.MySQL检查长度,可用SQL语言:
select LENGTH(fieldname) from tablename 来查看
搜狐公司高级 DBA叶金荣推荐《MySQL性能调优与架构设计》
http://bvbook.iteye.com/blog/408926
MySql优化(2009-08-28 系统架构师大会)
http://www.slideshare.net/secret/IzjEa4qGWlMeLH
架设java mysql主备及HA切换服务器
http://swachian.iteye.com/blog/222116
Linux下两个不同版本Mysql的安装
http://www.iteye.com/topic/203986
mysql集群整理版
http://www.iteye.com/topic/149130
http://www.iteye.com/topic/249875
mysql 存储引擎
http://samana.iteye.com/blog/368885
mysql表类型MyISAM和InnoDB比较
http://npsajax.iteye.com/blog/368737
MySQL engine/type类型InnoDB/MYISAM/MERGE/BDB/HEAP的区别
http://happyzhen.iteye.com/blog/353430
http://www.phpap.com/view.php?tid=50195&extra=&page=2
OLTP和OLAP 联机事务处理(OLTP)和联机分析处理(OLAP)
http://feigme.iteye.com/blog/149641
Linux下两个不同版本Mysql的安装
http://www.iteye.com/topic/203986
问题的产生:在已有的Red Hat Enterprise Linux AS 3.0系统上已经运行了一套web程序,使用Mysql4, tomcat41, 现在又要求安装一套新程序,依旧使用该tomcat41, 但数据库变为mysql5。
注意事项:
新的程序需要注意字符集的问题,
1)具体数据库的权限和分组问题,
2)mysql5下的具体数据库从windows直接拷贝到Linux下不好使的问题,
3)以及mysql5需要设置密码的问题,
4)mysql5在linux下对数据库区分大小写的问题。
5) mysql在终端进入
mysql>
时的用户名和密码问题
此外,在具体安装mysql5的过程中,要注意将mysql5的安装位置(baseDir),数据库的具体存放位置(dataDir),端口号(改为3307),进行修改,这样才能保证两个不同版本的数据库的同时运行。
mysql集群整理版
http://www.iteye.com/topic/149130
http://www.iteye.com/topic/249875
mysql 存储引擎
http://samana.iteye.com/blog/368885
MYSQL的共有7种存储引擎。每一种都为了不同的需要而选择最适合的引擎而,不是向oracle里头只有一种通用的存储引擎.
如何选择合适的MySQL存储引擎
http://database.51cto.com/art/200902/107871.htm
mysql 5.0.67-community-nt 存储 引擎 共12个
MyISAM、MEMORY(HEAP)、InnoDB、BerkeleyDB(BDB)、BLACKHOLE、EXAMPLE、
ARCHIVE、CSV、ndbcluster、FEDERATED、MRG_MYISAM、ISAM
mysql 5.0.67-community-nt 存储 引擎 适用列表
【 集群 】NDBCluster: 搜索方面 / Session数据
【 速度 】MyISAM: 字典索引 / Session数据 / bbs
【未知】Flat file: web统计数据
【 安全 】InnoDB: 金融事务
【未知】HEAP: 本地计算数据
MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:
◆ MyISAM管理非事务表。 它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。
◆ MEMORY存储引擎提供“内存中”表。 MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。
注释:MEMORY存储引擎正式地被确定为HEAP引擎。
◆ InnoDB和BDB存储引擎提供事务安全表。 BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。
◆ EXAMPLE存储引擎是一个“存根”引擎,它不做什么。 你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。
◆ NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。 它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。
◆ ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。
◆ CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。
◆ BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。
◆ FEDERATED存储引擎把数据存在远程数据库中。 在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。当你创建一个新表的时候,你可以通过添加一个ENGINE 或TYPE 选项到CREATE TABLE语句来告诉MySQL你要创建什么类型的表:
CREATE TABLE t (i INT) ENGINE = INNODB;
CREATE TABLE t (i INT) TYPE = MEMORY;
虽然TYPE仍然在MySQL 5.1中被支持,现在ENGINE是首选的术语。
mysql 显示表所属存储引擎
mysql> SHOW TABLE STATUS LIKE 'user' \G
mysql 显示表存储引擎
mysql> show engines;
Mysql 存储引擎对比图
http://robinwu.iteye.com/blog/314927
MySQL的存储引擎
http://samana.iteye.com/blog/368885
横向比较的是效率,纵向比较的数据可靠性
mysql表类型MyISAM和InnoDB比较
http://npsajax.iteye.com/blog/368737
MyISAM :这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引 的 顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量 的SELECT ,MyISAM是更好的选择。
InnoDB :这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT 或UPDATE ,出于性能方面的考虑,应该使用InnoDB表,
对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打 开也可以),将大大提高性能。
===============================================================
1. 4.0以上mysqld都支持事务,包括非max版本。3.23的需要max版本mysqld才能支持事务。
2. 创建表时如果不指定type则默认为myisam,不支持事务。
可以用 show create table tablename 命令看表的类型。
2.1 对不支持事务的表做start/commit操作没有任何效果,在执行commit前已经提交,测试:
执行一个msyql:
use test;
drop table if exists tn;
create table tn (a varchar(10)) type=myisam;
drop table if exists ty;
create table ty (a varchar(10)) type=innodb;
begin;
insert into tn values('a');
insert into ty values('a');
select * from tn;
select * from ty;
都能看到一条记录
执行另一个mysql:
use test;
select * from tn;
select * from ty;
只有tn能看到一条记录
然后在另一边
commit;
才都能看到记录。
3. 可以执行以下命令来切换非事务表到事务(数据不会丢失),innodb表比myisam表更安全:
alter table tablename type=innodb;
3.1 innodb表不能用repair table命令和myisamchk -r table_name
但可以用check table,以及mysqlcheck [OPTIONS] database [tables]
4. 启动mysql数据库的命令行中添加了以下参数可以使新发布的mysql数据表都默认为使用事务(
只影响到create语句。)
--default-table-type=InnoDB
测试命令:
use test;
drop table if exists tn;
create table tn (a varchar(10));
show create table tn;
5. 临时改变默认表类型可以用:
set table_type=InnoDB;
show variables like 'table_type';
或:
c:\mysql\bin\mysqld-max-nt --standalone --default-table-type=InnoDB
MySQL engine/type类型InnoDB/MYISAM/MERGE/BDB/HEAP的区别
http://happyzhen.iteye.com/blog/353430
http://www.phpap.com/view.php?tid=50195&extra=&page=2
看MySQL参考手册 发现CREATE TABLE 时有多种数据库存储引擎:
TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
网上查了下据说MyISAM、InnoDB两种引擎常用
大至区别如下[不知是否准确]:
高级处理:
MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
执行速度:
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快。
移值性:
MyISAM类型的二进制数据文件可以在不同操作系统中迁移。也就是可以直接从Windows系统拷贝到linux系统中使用。
-----------------------------
今天找到官方准确解释
· MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。
· InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。
· BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
· Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
· Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
· Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
· Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
· Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。
· Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。
请记住,对于整个服务器或方案,你并不一定要使用相同的存储引擎,你可以为方案中的每个表使用不同的存储引擎,这点很重要。
OLTP和OLAP 联机事务处理(OLTP)和联机分析处理(OLAP)
http://feigme.iteye.com/blog/149641
用户和系统的面向性:
OLTP是面向顾客的,用于事务和查询处理
OLAP是面向市场的,用于数据分析
数据内容:
OLTP系统管理当前数据.
OLAP系统管理大量历史数据,提供汇总和聚集机制.
数据库设计:
OLTP采用实体-联系ER模型和面向应用的数据库设计.
OLAP采用星型或雪花模型和面向主题的数据库设计.
视图:
OLTP主要关注一个企业或部门内部的当前数据,不涉及历史数据或不同组织的数据
OLAP则相反.
访问模式:
OLTP系统的访问主要由短的原子事务组成.这种系统需要并行和恢复机制.
OLAP系统的访问大部分是只读操作
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
下表列出了OLTP与OLAP之间的比较:
OLTP | OLAP | |
用户 | 操作人员,低层管理人员 | 决策人员,高级管理人员 |
功能 | 日常操作处理 | 分析决策 |
DB 设计 | 面向应用 | 面向主题 |
数据 | 最新的,细节的,二维的,分立的 | 历史的,聚集的,多维的,集成的 |
存取规模 | 读/写数条(甚至数百条)记录 | 读上百万(甚至上亿)条记录 |
操作频度 | 非常频繁(以秒计) | 比较稀松(以小时甚至以周计) |
工作单位 | 严格的事务 | 复杂的查询 |
用户数 | 数百个-数千万个 | 数个-数百个 |
DB 大小 | 100MB-GB | 100GB-TB |
mysql 监控脚本
http://niyunjiu.iteye.com/blog/321092
#!/bin/bash
# Shell script to restart MySQL server if it is killed or not working
# due to ANY causes.
# When script detects mysql is not running ( it basically sends ping request
# to MySQL) it try to start using /etc/init.d/mysql script; and it sends an
# email to user indicating the status.
# This script must be run from Cron Job so that it can monitor mysql server.
# For more info visit following url:
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005 /08 /linux-mysql-server-monitoring.html
# --------------------------------------------------------------------------
# Copyright ( C) 2005 nixCraft project <http://cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection ( NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
# mysql root/admin username
MUSER= "root"
# mysql admin/root password
MPASS= "SET-ROOT-PASSWORD"
# mysql server hostname
MHOST= "localhost"
#Shell script to start MySQL server i.e. path to MySQL daemon start/stop script.
# Debain uses following script, need to setup this according to your UNIX/Linux/BSD OS.
MSTART= "/etc/init.d/mysql start"
# Email ID to send notification
EMAILID= "notification@somewhere-corp.com"
# path to mail program
MAILCMD= "$(which mail)"
# path mysqladmin
MADMIN= "$(which mysqladmin)"
#### DO NOT CHANGE anything BELOW ####
MAILMESSAGE= "/tmp/mysql.fail.$$"
# see if MySQL server is alive or not
# 2 &1 could be better but i would like to keep it simple and easy to
# understand stuff :)
$MADMIN -h $MHOST -u $MUSER -p${ MPASS} ping 2 >/dev/null 1 >/dev/null
if [ $? -ne 0 ] ; then
echo "" >$MAILMESSAGE
echo "Error: MySQL Server is not running/responding ping request" >>$MAILMESSAGE
echo "Hostname: $(hostname)" >>$MAILMESSAGE
echo "Date & Time: $(date)" >>$MAILMESSAGE
# try to start mysql
$MSTART >/dev/null
# see if it is started or not
o= $( ps cax | grep -c ' mysqld$' )
if [ $o -eq 1 ] ; then
sMess= "MySQL Server MySQL server successfully restarted"
else
sMess= "MySQL server FAILED to restart"
fi
# Email status too
echo "Current Status: $sMess" >>$MAILMESSAGE
echo "" >>$MAILMESSAGE
echo "*** This email generated by $(basename $0) shell script ***" >>$MAILMESSAGE
echo "*** Please don't reply this email, this is just notification email ***" >>$MAILMESSAGE
# send email
$MAILCMD -s "MySQL server" $EMAILID < $MAILMESSAGE
else # MySQL is running :) and do nothing
:
fi
# remove file
rm -f $MAILMESSAGE
[root@testbox-04 mysql]# cat /etc/issue
CentOS release 5.2 (Final)
Kernel \r on an \m
[root@testbox-04 mysql]# uname -r
2.6.18-92.1.22.el5
[root@testbox-04 mysql]# rpm -qa | grep mysql
mysql-5.0.45-7.el5
mysql-server-5.0.45-7.el5
mysql-5.0.45-7.el5
php-mysql-5.1.6-20.el5_2.1
mysql-devel-5.0.45-7.el5
mysql-devel-5.0.45-7.el5
mysql-test-5.0.45-7.el5
mysql-bench-5.0.45-7.el5
[root@testbox-04 mysql]# sestatus -bv | head -n1
SELinux status: enabled
[root@testbox-04 mysql]# sestatus -bv | grep mysql
allow_user_mysql_connect off
mysqld_disable_trans on
[/code]
my.cnf配置:
为了节省空间,打扰次序排序的
[code]
[root@testbox-04 mysql]# grep -v "#" /etc/my.cnf | sort | uniq
back_log = 50
bind-address = 192.168.12.81
binlog_cache_size = 1M
bulk_insert_buffer_size = 64M
[client]
default_table_type = INNODB
ft_min_word_len = 4
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:500M:autoextend
innodb_data_home_dir = /var/lib/mysql/ibdata
innodb_file_io_threads = 4
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 32M
innodb_log_files_in_group = 3
innodb_log_file_size = 500M
innodb_log_group_home_dir=/var/lib/mysql/iblogs
innodb_max_dirty_pages_pct = 90
innodb_thread_concurrency = 16
interactive-timeout
[isamchk]
join_buffer_size = 8M
key_buffer = 512M
key_buffer_size = 32M
log_long_format
max_allowed_packet = 16M
max_connect_errors = 10
max_connections = 100
max_heap_table_size = 64M
[myisamchk]
myisam_max_extra_sort_file_size = 10G
myisam_max_sort_file_size = 10G
myisam_recover
myisam_repair_threads = 1
myisam_sort_buffer_size = 128M
[mysql]
[mysqld]
[mysqld_safe]
[mysqldump]
[mysqlhotcopy]
no-auto-rehash
open-files-limit = 8192
port = 3306
query_cache_limit = 2M
query_cache_size = 64M
quick
read_buffer = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
server-id = 1
socket = /tmp/mysql.sock
sort_buffer_size = 512M
sort_buffer_size = 8M
table_cache = 2048
thread_cache_size = 8
thread_concurrency = 8
thread_stack = 192K
tmp_table_size = 64M
transaction_isolation = REPEATABLE-READ
write_buffer = 8M
[/code]
错误日志1
[code]
[root@testbox-04 ~]# tail -f /var/log/mysqld.log
InnoDB: in this failed attempt. InnoDB only wrote those files full of
InnoDB: zeros, but did not yet use them in any way. But be careful: do not
InnoDB: remove old data files which contain your precious data!
090210 23:25:42 [ERROR] Default storage engine (InnoDB) is not available
090210 23:25:42 [ERROR] Aborting
090210 23:25:42 [Note] /usr/libexec/mysqld: Shutdown complete
090210 23:25:42 mysqld ended
[/code]
解决错误1:
my.cnf 里面打开
innodb_data_home_dir = /var/lib/mysql/ibdata
错误日志2:
[code]
090210 23:26:59 mysqld started
InnoDB: Error: auto-extending data file ./ibdata1 is of a different size
InnoDB: 640 pages (rounded down to MB) than specified in the .cnf file:
InnoDB: initial 32000 pages, max 0 (relevant if non-zero) pages!
InnoDB: Could not open or create data files.
InnoDB: If you tried to add new data files, and it failed here,
InnoDB: you should now edit innodb_data_file_path in my.cnf back
InnoDB: to what it was, and remove the new ibdata files InnoDB created
InnoDB: in this failed attempt. InnoDB only wrote those files full of
InnoDB: zeros, but did not yet use them in any way. But be careful: do not
InnoDB: remove old data files which contain your precious data!
090210 23:27:00 [ERROR] Can't start server : Bind on unix socket: Permission denied
090210 23:27:00 [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
090210 23:27:00 [ERROR] Aborting
[/code]
解决错误日志2
sealert -a /var/log/audit/audit.log
查看到selinux 阻止 mysqld 读取mysql.sock 文件,
Detailed Description:
SELinux has denied mysqld access to potentially mislabeled file(s) (mysql.sock).
This means that SELinux will not allow mysqld to use these files. It is common
for users to edit files in their home directory or tmp directories and then move
(mv) them to system directories. The problem is that the files end up with the
wrong file context which confined applications are not allowed to access.
Allowing Access:
If you want mysqld to access this files, you need to relabel them using
restorecon -v 'mysql.sock'. You might want to relabel the entire directory using
restorecon -R -v '<Unknown>'.
由于mysql无法启动,无法产生mysql.sock
所以,暂时取消对mysqld监控
setsebool mysqld_disable_trans 1
错误日志3
[code]
090210 23:29:42 mysqld started
090210 23:29:42 InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
InnoDB: If you are installing InnoDB, remember that you must create
InnoDB: directories yourself, InnoDB does not create them.
InnoDB: File name /var/lib/mysql/ibdata/ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
090210 23:29:42 mysqld ended
[/code]
解决错误3:
rm -rf /var/lib/mysql/ibdata/*
rm -rf /var/lib/mysql/iblogs/*
错误日志4:
[code]
090210 23:52:21 mysqld started
090210 23:52:22 InnoDB: Started; log sequence number 0 43656
090210 23:52:23 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
090210 23:52:23 mysqld ended
[/code]
解决方法4:
[root@testbox-04 /]# /usr/bin/mysql_install_db
Installing MySQL system tables...
OK
Filling help tables...
OK
错误日志5:
[code]
090211 00:00:34 mysqld started
090211 0:00:35 InnoDB: Started; log sequence number 0 43656
/usr/libexec/mysqld: File './mysql-bin.000008' not found (Errcode: 13)
090211 0:00:35 [ERROR] Failed to open log (file './mysql-bin.000008', errno 13)
090211 0:00:35 [ERROR] Could not open log file
090211 0:00:35 [ERROR] Can't init tc log
090211 0:00:35 [ERROR] Aborting
[/code]
解决错误5:
感觉到是读取bin-log错误,为什么开启会读bin-log
而且,我的/var/lib/mysql下 mysql-bin.000008文件是存在的
先注释掉my.cnf log-bin
错误日志6:
[code]
090211 00:23:19 mysqld started
/usr/libexec/mysqld: File '/var/lib/mysql/testbox-04-slow.log' not found (Errcode: 13)
090211 0:23:19 [ERROR] Could not use /var/lib/mysql/testbox-04-slow.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
090211 0:23:20 InnoDB: Started; log sequence number 0 43656
[/code]
解决错误6:
#log_slow_queries
#long_query_time = 2
以上2行增加注释;
错误日志7:
[code]
090211 00:02:51 mysqld started
090211 0:02:52 InnoDB: Started; log sequence number 0 43656
090211 0:02:52 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
090211 0:02:52 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
090211 0:02:52 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
090211 00:02:52 mysqld ended
[/code]
解决错误方法6:
/usr/bin/mysql_install_db --user=mysql
哈哈:起来了
[root@testbox-04 mysql]# service mysqld start
Starting MySQL: [ OK ]
[root@testbox-04 mysql]#
上面的前提是注释掉了selinux对mysql的mysql.sock监控
现在把监控加进去,在做如下测试。
还是起不来,看这个样子是selinux严格的权限禁止 原生目录/var/lib/mysql下的sock文件产生
那更改/etc/my.cnf
[code]
[root@testbox-04 mysql]# grep -v "#" /etc/my.cnf |grep -i sock
socket = /var/lib/mysql/mysql.sock
socket = /var/lib/mysql/mysql.sock
改到/var/lib/mysql下吧
重新加监控进去
[root@testbox-04 mysql]# setsebool mysqld_disable_trans 0
[root@testbox-04 mysql]# ls -lZ |grep sock
srwxrwxrwx mysql mysql user_u:object_r:mysqld_var_run_t mysql.sock
090211 00:42:48 mysqld started
090211 0:42:49 InnoDB: Started; log sequence number 0 43656
090211 0:42:49 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.45' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
[/code]
end
MYSQL和ORACLE的一些操作区别 / mysql difference / mysql qubie
http://user.qzone.qq.com/170475387/blog/1204794106
MYSQL和ORACLE的一些操作区别
http://www.javaresearch.org/article/29426.htm
1. 自动增长的数据类型处理
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
2. 单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
3. 翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;PHP里还可以用SEEK定位到结果集的位置。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80。
以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 ):
语句一:
SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
语句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
4. 长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。
5. 日期字段的处理
MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)年-月-日 24小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’)
日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用 DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;
MYSQL中插入当前时间的几个函数是:NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())
而oracle中当前时间是sysdate
6. 空字符的处理
MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
7. 字符串的模糊比较
MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快,用字符串比较函数 instr(字段名,'字符串')>0 会得到更精确的查找结果。
8. 程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)
http://www.2cto.com/database/201501/372605.html
Ubuntu下关闭apache和mysql的开机启动
http://blog.163.com/thinki_cao/blog/static/839448752012112694037995/
关闭linux下mysql的开机启动
http://blog.itpub.net/25281640/viewspace-709341
linux系统设置程序开机启动(以mysql为例)
http://blog.sina.com.cn/s/blog_6ccd0a11010175ri.html
现在最新版的mysql都是release版本,即不需要configure、make、make install命令来配置安装的。解压之后直接复制到目标目录下,然后按照目录中的INSTALL-BINARY文件中所指示的进行配置即可。
1. > groupadd mysql
2. > useradd -r -g mysql mysql
这两步的作用是创建必需的组和所有者(其实这两步的具体作用我也不是很了解,因为我一直都是使用root账号来操作的)。
注意的是,有些linux系统(我遇到过的有redhat、centos)中都会自带mysql,但是版本一般比较旧。如果删除旧版本安装新版本,最好在/etc/passwd中将已经有的mysql用户删除掉(当然应该也可以沿用系统自动创建的组和用户)。
3. > cd /usr/local/mysql // 这个是我通常用的放置用户程序的路径
4. > chown -R mysql .
5. > chgrp -R mysql . // 将文件夹的所有者和所有者所在的组设置为mysql
6. > scripts/mysql_install_db --user=mysql // 安装
7. > chown -R root . // 将文件夹的所有者改回root
8. > chown -R mysql data // 将存放数据库文件的目录所有者设置为mysql
(我还是觉得上面几步太折腾了,因为我一直都是使用root操作。不过这几步的作用马上就显现出来了。。。)
9. > cp support-files/my-large.cnf /etc/my.cnf
关于这步以后再详细介绍,这里只要知道是创建数据库配置文件即可
10. > bin/mysqld_safe --user=mysql &
启动mysql,并使之在后台运行,启动时设置该进程的用户为mysql。
这里多解释几句:
首先,mysql的守护进程是mysqld,bin目录下也有这个命令。但实际上用户很少与之直接交互,而是通过一个包装程序mysqld_safe与之交互。mysqld_safe会在守护进程mysqld启动之前添加一些与安全有关的日志特性和系统集成特性(具体是哪些我也不知道,暂时应该也不需要知道。。。)。
其次,在启动守护进程的时候,将进程用户设置为mysql。mysql的守护进程应该按非root用户运行,这样在攻击者通过mysql安全漏洞成功入侵到服务器时,可以将破坏减少到最低程度。
11. > cp support-files/muysql.server /etc/init.d/mysql.server
这一步的作用是设置mysql开机自动启动。其中mysql.server是一个脚本文件,太长了没有仔细研究,其功能就是进行一些设置后启动mysql。
下面来讲一下和系统启动相关的目录 ==> /etc/rc.d
注:rc是run control的缩写。
在/etc/rc.d目录下有这样几个目录:
init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
init.d目录下存放的是系统启动时可能会运行的脚本,其中一些脚本的功能是启动安装在系统中的程序。
rcN.d(N=0,...,6)目录中存放的都是到init.d目录下脚本的符号链接(软链接)。
其中N表示的是系统的运行级别。关于运行级别,可以查看/etc/inittab文件中的开头部分:
************************************************************************************************
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
************************************************************************************************
附上中文版:
# 缺省的运行级,RHS 用到的级别如下:
# 0 - 停机(千万不要把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,但是没有 NFS
# 3 - 完全多用户模式
# 4 - 没有用到
# 5 - X11
# 6 - 重新启动 (千万不要把initdefault 设置为6 )
#
************************************************************************************************
这段脚本介绍了7种运行级别,并设置默认运行级别为5(一般的linux系统X11图形界面的运行级别是5)。
init进程(ID为1的进程)在系统自举时会读取inittab文件,确定系统的运行级别。
rcN.d目录下的符号链接指向的是该运行级别下系统要运行的脚本。其中符号链接分为两种,一种是以S开头的,表示要启动的服务;另一种是以K开头的,表示要关闭的服务。
这里我们只关注如何设置开机自动启动,所以只看S开头的符号链接。仍是以mysql为例:
首先运行命令“chkconfig --list”查看系统服务(这里只给出mysql的那一行):
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
可以看到在运行级别为2-5中,mysql都是默认启动的。在rc2.d-rc5.d目录下,我们可以找到如下文件:
lrwxrwxrwx 1 root root 16 09-07 03:29 S64mysqld -> ../init.d/mysqld
S64mysqld是指向init.d目录下mysqld脚本的链接。S表示启动(start);64表示启动的顺序,因为有些服务的启动要依赖于其他服务,这个序号是允许重复的,如果我们要添加新的开机启动项,通常将序号设置为99。
通常设置开机启动项的一个简单的方法是使用chkconfig命令,
> chkconfig mysqld off
该命令关闭了mysql开机启动。可以通过“chkconfig --list”命令查看,或者直接去rc5.d目录下,这时候会发现S64mysqld变成了K64mysqld。
若要恢复mysql开机启动,运行:
> chkconfig mysqld on
最后一部分说的有点乱,部分是参考下面两篇文章:
init.d,rc.d详解 Linux运行时详解
http://www.cnitblog.com/windone0109/archive/2008/04/23/42651.html
/etc/rc.d/init.d和/etc/init.d 联系区别
http://www.cnblogs.com/balaamwe/archive/2012/01/16/2323665.html
关闭linux下mysql的开机启动
http://blog.itpub.net/25281640/viewspace-709341
使用chkconfig --level 35 mysqld off就可以解决了.
或者
[root@Loadrunner19 ~]# chkconfig --list | grep sql
mysql 0:off1:off2:off3:off4:off5:off6:off
[root@Loadrunner19 ~]# chkconfig mysql off
mysql 0:off1:off2:off3:on 4:off5:on6:off
在大多数的linux发行版本中,通常有8个runlevel
Runlevel System State
0 Halt the system
1 Single user mode
2 Basic multi user mode
3 Multi user mode
5 Multi user mode with GUI
6 Reboot the system
S, s Single user mode
多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面,.
而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面
项目 数据库对比
项目时间: 2013 11至 2013 12
测试环境:Linux+tomcat+DB2+MYSQL
测试工具:Loadrunner
项目描述:系统是为处相关的请求。
责任描述:确定测试计划的目的和策略(相同场景对比DB2和MYSQL的相关性能指标)后,再针对系统进行性能测试。
优化点:查询MSQL的时候出现了性能瓶颈,对于问题分析后发现由于未使用连接池而不停的创建数据库连接,所以导致DB2的CPU资源大部分用于连接。更改代码后使用C3P0连接池问题解决。
windows 7 mysql 5.5 显示数据库大小写表名方法 / MySQL修改配置 区分大小写
http://www.jb51.net/article/25669.htm
ftp://10.24.73.145/CloundTest/MySQL/MySQL Server 5.5/my.ini
修改MySql Server安装目录下的 my.ini 文件,
在mysqld节下加入下面一行 set-variable=lower_case_table_names=0 (0:大小写敏感;1:大小写不敏感)最后重启一下MySql服务即可。
http://wiki.cns*****.com/pages/viewpage.action?pageId=26321501
001 SQL优化
1 优先考虑使用等号(=)操作。其次考虑使用大于等于(>=),小于等于(<=)操作。
然后再考虑大于(>),小于(<)操作。
2 减少使用like操作,避免使用不等于操作
3 谨慎使用排序(sort by)和分组(group by)
4 使用LIKE的时候,应该使用右匹配(A%),而避免使用左右匹配(%A%)和左匹配(%A),
使用右匹配时尽快能提供较多的数据降低查询开销
5 使用AND时,筛选结果集小的表达式应该置于AND左侧,使用OR语句时,筛选结果集大的
表达式应该列于OR左边。
6 避免不必要的排序。使用UNION ALL代替UNION,添加恰当的索引,或在DISTINCT,
GROUP BY,ORDER BY子句涉及的列上创建索引。
7 避免对三个以上的字段排序
8 避免对长度超过30的字符字段进行排序
9 避免在排序字段上添加表达式
10 不使用任何聚合函数情况下,使用DISTINCT代替GROUP BY
11 根据业务逻辑选择最低粒度的隔离级别。在允许脏读的前提下,在查询语句中应该使用
WITH UR,避免不必要的锁表。
12 IN中参数个数避免超过20个
13 查询语句的结果字段应该书写明确的列名,不应该使用通配符
14 不应该在代码使用DDL相关操作
15 查询语句应该设置有效的限定条件,返回预期的结果集,避免返回过大的结果集
16 使用SELECT...FETCH FIRST n ROWS ONLY限制结果集大小,建议100个以内
17 用于比较的数据应该使用相同的数据类型,避免发生数据转换
18 SQL语句变量应该使用参数化,尤其是id类型,时间类型字段等
19 避免对索引字段进行函数操作
20 SQL中的子查询嵌套层次避免超过4层
21 查询表达式左边避免出现函数以及其他运算表达式,必须的表达式应该用替代的方法在右边实现
22 所有的SQL应该尽可能提前在测试环境上进行优化和调试。获取必要的执行计划和运行时间信息
end