mysql问题总结
2010-08-25 13:21
351 查看
通过xyykt项目,总结了mysql的一些常用命令及遇到的问题.
登陆:mysql -u用户名 -p密码
用户
为用户赋权限语句:GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `AUTHTEST`.* TO 'username@'%'
注意:username@'%'和username@'localhost'是两个不同的用户,付给一个用户的权限不会适用于另一个。
配置文件my.cnf
mysql配置文件路径:/etc/my.cnf (如果这里没有,还可以尝试查找:mysql-data-dir/my.cnf, ~/.my.cnf)
mysql安装完后,需要修改这个配置文件,添加两行:
default-character-set=gbk(或utf8):使数据库支持中文,使后面新建的模式默认字符为gbk(详细见前面的博文“MYSQL数据库字符集支持”、“mysql字符集问题”);
lower_case_table_names=1:使mysql不区分大小写(如果在数据库区分大小写的情况下,新建了名称为大写的模式、表等。后来在my.cnf添加了这一行,这些对象就不能再使用。因为不区分大小写就意味着mysql将所有命令及sql语句的大写字母自动转换成小写,再到数据库中匹配,若数据库中有大写名称的对象,就无法被识别);
表类型
(参见“mysql表类型”)如果表涉及到事务操作,需要在建表时制定表类型为InnoDB,
语句是:
create table databasename.tablename
(
……
)engine=InnoDB;
timestamp类型注意
(参见“mysql TIMESTAMP详解 ”)一个表里只能有一个自动生成类型的字段:自动生成字段类型包括自增流水、insert自动更新timestamp、update自动更新timestamp。
如果一个表里需要存在多个这种字段,可以用触发器trigger,例如:
create table databasename.tablename
(
……
intime timestamp not null default CURRENT_TIMESTAMP,
modtime timestamp,
……
);
create trigger databasename.triggername before update on databasename.tablename for each row set new.modtime=now();
存储过程执行权限
原理:用户A创建一个存储过程,将其执行权限赋给用户B,则用户B可以执行该存储过程。
mysql-connector-java-5.1.12-bin.jar的bug:以上原理不适用,也就是说,用户A创建的存储过程,给用户B付了执行权限以后,B仍然无法执行。解决办法是在mysql连接的参数中添加“noAccessToProcedureBodies=true”;
mysql-connector-java-5.1.13-bin.jar修正了这个bug。
登陆:mysql -u用户名 -p密码
用户
为用户赋权限语句:GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `AUTHTEST`.* TO 'username@'%'
注意:username@'%'和username@'localhost'是两个不同的用户,付给一个用户的权限不会适用于另一个。
配置文件my.cnf
mysql配置文件路径:/etc/my.cnf (如果这里没有,还可以尝试查找:mysql-data-dir/my.cnf, ~/.my.cnf)
mysql安装完后,需要修改这个配置文件,添加两行:
default-character-set=gbk(或utf8):使数据库支持中文,使后面新建的模式默认字符为gbk(详细见前面的博文“MYSQL数据库字符集支持”、“mysql字符集问题”);
lower_case_table_names=1:使mysql不区分大小写(如果在数据库区分大小写的情况下,新建了名称为大写的模式、表等。后来在my.cnf添加了这一行,这些对象就不能再使用。因为不区分大小写就意味着mysql将所有命令及sql语句的大写字母自动转换成小写,再到数据库中匹配,若数据库中有大写名称的对象,就无法被识别);
表类型
(参见“mysql表类型”)如果表涉及到事务操作,需要在建表时制定表类型为InnoDB,
语句是:
create table databasename.tablename
(
……
)engine=InnoDB;
timestamp类型注意
(参见“mysql TIMESTAMP详解 ”)一个表里只能有一个自动生成类型的字段:自动生成字段类型包括自增流水、insert自动更新timestamp、update自动更新timestamp。
如果一个表里需要存在多个这种字段,可以用触发器trigger,例如:
create table databasename.tablename
(
……
intime timestamp not null default CURRENT_TIMESTAMP,
modtime timestamp,
……
);
create trigger databasename.triggername before update on databasename.tablename for each row set new.modtime=now();
存储过程执行权限
原理:用户A创建一个存储过程,将其执行权限赋给用户B,则用户B可以执行该存储过程。
mysql-connector-java-5.1.12-bin.jar的bug:以上原理不适用,也就是说,用户A创建的存储过程,给用户B付了执行权限以后,B仍然无法执行。解决办法是在mysql连接的参数中添加“noAccessToProcedureBodies=true”;
mysql-connector-java-5.1.13-bin.jar修正了这个bug。
相关文章推荐
- mysql 开发进阶篇系列 15 锁问题 (总结)
- Mysql区分大小写(大小写敏感)的问题总结
- mysql 编码问题总结
- qt、Navicat、mysql连接的相关问题总结
- mysql索引问题个人总结
- mysql 问题总结
- 总结:MySql在建立索引优化时需要注意的问题
- php+mysql+ajax框架的中文问题总结
- MySQL登陆问题总结
- Centos中hive/hbase/hadoop/mysql实际操作及问题总结
- Fedora 16 下安装mysql 出现Unit mysql.service failed to load 等一些问题的总结
- Ubuntu nginx+php+mysql的一些问题总结
- mysql解决中文乱码问题总结
- mysql问题总结
- -Java连接Excel、MySQL、SQLServer数据源及相关增、删、改、查方法和问题总结-【Part II】
- 安装mysql时遇到的一些问题总结 一
- MySQL用户问题总结
- 解决mysql的问题安装卸载以及配置外部访问权限的各种问题总结
- mysql 安装问题小总结
- mysql使用sum()出现null的问题,各种总结