这里是普通文章模块栏目内容页
Mysql管理总结
1. phpMyAdmin连接mysql出现错误:

使用phpMyAdmin 连接MySql数据库时出现如下错误:

#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

错误原因:原因是因为你使用的mysql服务器版本中使用了新的密码验证机制,这需要客户

端的版本要在4.0以上,原来的密码函数被改为old_password ();,这样使用password()生成的密码在旧的版本上的客户端就不好使了,而PHP中的MYSQL客户端都是3.23的(当然,mysqli的扩展除外),问题就在这了。这种问题只在Mysql 4.1.x以上的版本才会出现的。

解决办法:

a) 升级mysql  客户端的版本;

b) 也可以在服务器上用old_password函数,将用户的密码重新设置一下,具体的方法是:

        mysql>set password for 'root'@'localhost'=old_password('123');       

然后就可以用旧版本的客户端来连接了。
2. mysql 启动指定my.cnf文件路径:

要使用指定的my.cnf文件,而不用默认的/etc/my.cnf文件,可以在启动时,在mysqld_safe 后加上参数--defaults-file=/usr/local/server/mysql2/etc/my.cnf

但是要注意的是,主参数必需紧接着mysqld_safe 后面,如果做第二个以后的参数加入时,则会出现如下错误:

/usr/local/server/mysql/libexec/mysqld: unknown variable 'defaults-file=/usr/local/server/mysql2/etc/my.cnf'

且服务器启不来。
3. 当启动innodb错误:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes

InnoDB: than specified in the .cnf file 0 268435456 bytes!

100204 15:24:39 [ERROR] Plugin 'InnoDB' init function returned error.

出现这个错误的原因是$datadir下的ibdata1和ib_logfile*文件的大小与my.cnf指定的大小不一至造的,可以将这几个文件删除掉,然后重启mysql,让其重新生成这些文件。
4. mysql建立,查看和删除自定义函数:

查看:SHOW FUNCTION STATUS;可以列出某个数据库所弄有的自定义函数

   show create function 函数名; 查出自定义函数的内容;

建立:
     set global log_bin_trust_function_creators=1  设置上述的变量值为1,否则在建    立时会出现如下错误: 

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

   这是因为我们启用了bin-log日志的的原因

Delimiter $$

设置语句的分隔符,也就是一个语句的结束符,因为默认情况下,mysql 的语句结束符是; 而我们在建立自定义函数,可能要使用这个;号,所以我们需要将分隔符换成其它们的。,这里换成$$

CREATE DEFINER=`root`@`` FUNCTION `sseq`(seq_name VARCHAR(50)) RETURNS int(11) BEGIN DECLARE value INTEGER; SET value = 0; SELECT current_value INTO value FROM sequence WHERE name = seq_name; RETURN value; END $$

建立一个自定义的函数 sseq

执行:要执行上述函数,可以使用下列方法

select sseq('poi_seq');

删除:drop function sseq ;

5. mysql建立,查看和删除过程:

建立:delimiter $$

create procedure insert_last(out cnt int)

begin

declare maxid int;

select max(id)+1 into maxid from account;

insert into account(id,name) values(maxid,'hello');

select count(id) into cnt from account;

END$$

查看:show procedure status ;

show create procedure insert_last;

执行: call insert_last(@a)

删除:

drop procedure insert_last;
6. 当出现ERROR 1449错误:

现象:

当在系统中执行查询时,特别是执行自定义函数或过程时,出现如下错误:

ERROR 1449 (HY000): The user specified as a definer ('root'@'') does not exist

原因:

系统中不存在root@用户,而执行上述命令时,使用的刚好是root@用户,所以就报上

述错误;

解决:执行下列语句,建立对应的用户即可:

   grant all on *.* to root@% identified by 'admin8*';

7. mysql 指定监听指定的IP地址

默认的情况,mysql 在启动时会监听本机的所有的IP地址的3306端口,当为满足某些要求时,可以指定mysql 在启动时监听指的IP,方法是:在my.cnf文件里的mysqld段里添加bind-address    = 122.224.72.119,这样就可以只监听指定的一个IP了。目前mysql 还不能做做监听多个指定的IP 地址

8. 关于mysql的版本号

以下是关于mysql版本号的含义,例如mysql-5.1.42版本的

其中5 :表示主版本号和文件格式。所有mysql 5系列的都具有相同的文件格式;

第二个数字1:表示发布的版本号。主版本号和发布版本号联合起来组成发布序列号;

第三个数字42:表示某个发布序列里的版本号。这个版本号会随着每次版本的发布而增加。通常应该选择序列里的最近的版本进行使用。

每次较小的更新,版本序列号中的最后一个数字会增加。当有大的新特性或者更新内容与前面一个版本不兼容时,第二个数字会增加的。而当文件格式改变的时候,第一个数字会增加的。

   版本名称中还可能包含一个后缀来表示发布版本的稳定性的。在发布的系列版本中有一套后缀来表示稳定性改进,这些后缀包括:

Alpha:表示这个版本仅是一个演示版本。已知的bug已经被记录了。大多数的alpha

版本都添加了新的命令和扩展。

Beta:表示这个版本可以用在开发环境中。在测试版中,特性和兼容性问题可能已

经被解决了,但是测试版本中可能会存未标识的bug。且这个版本中的所有API,扩展的结构,SQL语法在beta版本的后续版本中都不会被改变。

Rc: 表示待发行版。待发行版确信是稳定的版本,而且在MySQL内部进行的测试都

通过了,同时,所有已知的运行期的重大Bug都被修正了。然而,这个版本并没有经过长期大范围的使用,以确认所有的bug都被标识了。

没有任何后缀:表示这个版本是通用版本(GA)或者产品版本。GA版是稳定的版

本,并且成功的进行前面几个版本的过程,而且确信是可靠的,没有紧急的bug,同时适合应用于生产环境中。

9. 关于mysql编译与性能的关系

1. 、在linux平台上,如果编译成动态连接的(即没有使用-static选项),那么要慢13%。但是要注意:为满足客户应用的需要,可能还是需要编译动态连接的;

2. 对于服务器和客户端在同一台机器上的连接,如果使用TCP/IP连接要比使用socket连接性能低7.5%(在unix平台上,如果连接的主机名用localhost,MySQL默认使用socket文件来连接);

3. 如果使用TCP/IP连接,客户端和服务器端不在同一台机器上要比在同一台机器上慢8%-10%,即使用网卡的速度高于100Mb/s;

4. 使用安全连接(所有数据使用内部SSL支持的加密)性能要比非安全连接低55%;

5. 在Sun UltraSPARC 平台上,使用Forte5.0来编译要比使用gcc3.2编译后的快4%;

6. 在Sun UltraSPARC平台上,使用Forte5.0编译成32模式要比编译成64模式快4%;

7. 在Linux X86平台上,使用不带gcc的框架指针(即不使用-fomit-frame-pointer 或 –fomit-frame-pointer –ffixed-ebp),将会使用mysqld快1%-4%;

10. 设置最大连接数

1)入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查max_connections=100

修改为 max_connections=1000 服务里重起MYSQL即可;

2)MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppassword设置新

的最大连接数为200:mysql> set GLOBAL max_connections=200