原文链接 :
Ubuntu 12.04 配置MySQL
在Ubuntu12.04 之前的版本中配置MySQL数据库非常方便,只需要运行3条命令即可:
sudo apt-get install mysql-server
sudo apt-get install mysql-admin
sudo apt-get install mysql-query-browser
今天安装了Ubuntu 12.04 ,mysql-server可以安装成功,但是mysql-admin却找到不到。原来Ubuntu 12.04已经全面升级了MySQL数据库,mysql-server已经升级到5.5.22,MySQL的图形界面mysql-admin和mysql-query-browser也升级到mysql-workbench。
所以,只要执行两条命令即可:
sudo apt-get install mysql-server
sudo apt-get install mysql-workbench
使用注意:
删除外键
建立的时候:
alter table tb_user_role
add constraint fk_user_id_tb_user_role
foreign key(`user_id`) 其他省略...
删除的时候:
alter table tb_user_role
drop foreign key fk_user_id_tb_user_role
安装完原来还得配置,为什么linux的软件就不能零配置呢?
1 配置文件在/etc/mysql/my.cnf
打开它,注释掉
bind-address = 127.0.0.1
2 字符集,建数据库的时候统一全部用utf8
如何配置mysql默认的字符集,以后找到再补上
注意是5.5以后才是:
[mysqld]
.....
character-set-server=utf8
collation-server=utf8_general_ci
utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法,一些字符还是不能支持。
utf8_unicode_ci不能完全支持组合的记号。
utf8_general_ci是一个遗留的 校对规则,不支持扩展,它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用 utf8_unicode_ci的校对规则相比,比较正确性较差。
应用上的差别
1、对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。
2、utf8_general_ci也适用与德语和法语,除了‘?’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用 utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。
用一句话概况上面这段话:utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了
参考:
http://www.diybl.com/course/7_databases/mysql/myxl/20100721/474574.html
MySQL(5.5以前,之后的不一定适用)字符集修改命令
1.修改服务器级 a. 临时更改: mysql>SET GLOBAL character_set_server=utf8; b. 永久更改:shell>vi /etc/my.cnf[mysqld]default-character-set=utf8
2.修改数据库级 a. 临时更改: mysql>SET GLOBAL character_set_database=utf8; b. 永久更改:改了服务器级就可以了
3.修改表级 mysql>ALTER TABLE table_name DEFAULT CHARSET utf8; 更改了后永久生效
4.修改列级修改示例: mysql>ALTER TABLE `products` CHANGE `products_model` `products_model` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; 更改了后永久生效 5.更改连接字符集 a. 临时更改:mysql> SET NAMES utf8;b. 永久更改: shell>vi /etc/my.cnf在[client]中增加:default-character-set=utf8
2 解决大小写问题
MySQL在Linux下数据库名、表名、列名、别名大小写规则:
1、数据库名与表名是严格区分大小写
2、表的别名是严格区分大小写
3、列名与列的别名在所有的情况下均是忽略大小写的
4、变量名也是严格区分大小写的
注意:
A、Linux下MySQL安装完后默认:区分表名的大小写,不区分列名的大小写
B、改变表名的大小写区分规则的方法:用root帐号登录,在/etc/my.cnf 或 /etc/mysql/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MySQL服务,若设置成功,则不再区分表名的大小写。
注意:如果在/etc或/etc/mysql找不到my.cnf ,需要从其他地方拷贝过来,因为使用rpm安装mysql时,需要手工拷贝my.cnf。具体操作:
到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
其中:
my-small.cnf是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。
my-medium.cnf是为中等规模的数据库而设计的。
my-large.cnf是为专用于一个SQL数据库的计算机而设计的。
my-huge.cnf是为企业中的数据库而设计的。
[ Windows ]
MySQL在Windows下数据库名、表名、列名、别名都不区分大小写。
如果想大小写区分则在my.ini 里面的mysqld部分
加入 lower_case_table_names=0
常见错误:
http://blog.chinaunix.net/uid-7589639-id-3396287.html
错误日志有类似警告:
点击(此处)折叠或打开
- 120119 16:26:04 [Warning] IP address '192.168.1.10' could not be resolved: Name or service not known
- 120119 16:26:04 [Warning] IP address '192.168.1.14' could not be resolved: Name or service not known
- 120119 16:26:04 [Warning] IP address '192.168.1.17' could not be resolved: Name or service not known
点击(此处)折叠或打开
- |592|unauthenticated user|192.168.1.10:35320|NULL|Connect| |login|NULL|
- |593|unauthenticated user|192.168.1.14:35321|NULL|Connect| |login|NULL|
- |594|unauthenticated user|192.168.1.17:35322|NULL|Connect| |login|NULL|
点击(此处)折叠或打开
- [mysqld]
- skip-name-resolve
数据库服务器问题,数据库操作无法创建新线程。一般是有以下3个方面的原因:
1)、MySQL 线程开得太多。
2)、服务器系统内存溢出。
3)、环境软件损坏或系统损坏。
点击(此处)折叠或打开
- 1)进入 phpmyadmin 的 mysql 数据库中的 user 表,对数据库的用户进行编辑,修改 max_connections 的值。适当的改小一点。
- 2)联系服务器管理员检查服务器的内存和系统是否正常,如果服务器内存紧张,请检查一下哪些进程消耗了服务器的内存,同时考虑是否增加服务器的内存来提高整个系统的负载能力。
- 3)mysql版本更改为稳定版本
- 4)优化网站程序的sql等等
点击(此处)折叠或打开
- mysql> drop database xjtrace;
- ERROR 1010 (HY000): Error dropping database (can't rmdir './xjtrace/
在做数据库删除时出现这种提示,其原因是在database下面含有自己放进去的文件,譬如*.txt文件或*.sql文件等,只要进去把这个文件删了在执行。
点击(此处)折叠或打开
- mysql>drop database xjtrace;
- Query OK, 0 rows affected (0.00 sec)
果断删除即可!!
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行
点击(此处)折叠或打开
- mysql> show variables like 'max_allowed_packet';
- +--------------------+---------+
- | Variable_name | Value |
- +--------------------+---------+
- | max_allowed_packet | 1048576 |
- +--------------------+---------+
- 1 row in set (0.00 sec)
- mysql> show variables like 'net_buffer_length';
- +-------------------+-------+
- | Variable_name | Value |
- +-------------------+-------+
- | net_buffer_length | 16384 |
- +-------------------+-------+
- 1 row in set (0.00 sec)
根据参数值书写mysqldump命令,如:
mysql>mysqldump -uroot -p 数据库名 -e --max_allowed_packet=1048576 -net_buffer_length=16384 > SQL文件
点击(此处)折叠或打开
- mysql> mysqldump -uroot -p xjtrace -e --max_allowed_packet=1048576 --net_buffer_length=16384 >xjtrace_data_`date +%F`.sql