mysql

ubuntu 9.10/centos上配置nginx+php-fpm+mysql环境 2010.7.29版本

以前有过不少版本,不过随着系统翻新,一些库的安装名称发生了变化,所以重新制作一个版本。
这个在全新的ubuntu9.10上可用,完全从全新的系统开始安装,所有步骤都会标明。系统是64位,32位上可能略有区别,那个会在其他帖子里写明。
转载注明来自typengine.com

不管是vps,还是服务器,安装完ubuntu后,首先切换到root身份。用sudo -s命令。
然后输入
lsb_release -a
确认是不是ubuntu 9.10,应该会出现如下提示。

Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:        9.10
Codename:       karmic

然后介绍下ubuntu下的编辑器nano的用法,新手可能不太明白vi编辑器的使用,功能过去强大。nano相对更直观更简易些,在ubuntu下默认就有,centos下就需要另外安装
nano 文件名   打开文件

discu6的数据库优化语句

给一些数据表的字段添加索引,有效提高查询速度。


ALTER TABLE `cdb_pms` ADD INDEX ( `folder` );
ALTER TABLE `cdb_threads` ADD INDEX ( `displayorder` );
ALTER TABLE `cdb_threads` ADD INDEX ( `dateline` );
ALTER TABLE `cdb_threads` ADD INDEX ( `closed` );
ALTER TABLE `cdb_threadsmod` ADD INDEX ( `dateline` );
ALTER TABLE `cdb_sessions` ADD INDEX ( `invisible` );
ALTER TABLE `cdb_forums` ADD INDEX ( `type` );
ALTER TABLE `cdb_forums` ADD INDEX ( `displayorder` );

批量导出mysql权限一句话脚本

由于迁移库和合并库需要,经常要导出mysql的权限及合并 mysql的权限

下面是把mysql库所有权限导出到一个文件中的一句话脚本

mysql -p'XXXXX' -e “select user,'@',host from mysql.user”|awk '(NR>1){print “`”$1″`”$2″`”$3″`”}'|while read user;do mysql -p'XXXX' -e “show grants for $user”;done|sed /”Grants for”/d >/root/test.grants

XXXX为mysql  root密码

>/root/test.grants 为重定向到某个文件

导入的时候可以直接复制该文件中的内容,在mysql中粘贴即可,或者直接导入。

MySQL配置文件例子翻译

#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大
#TYPE: SYSTEM
#END CONFIG INFO

#
# 此mysql配置文件例子针对4G内存
# 主要使用INNODB
#处理复杂队列并且连接数量较少的mysql服务器
#
# 将此文件复制到/etc/my.cnf 作为全局设置,
# mysql-data-dir/my.cnf 作为服务器指定设置
# (@localstatedir@ for this installation) 或者放入
# ~/.my.cnf 作为用户设置.
#
# 在此配置文件中, 你可以使用所有程序支持的长选项.
# 如果想获悉程序支持的所有选项
# 请在程序后加上”–help”参数运行程序.
#
# 关于独立选项更多的细节信息可以在手册内找到
#

通过tungsten replicator实现mysql多主一从的备份架构

Tungsten是一套用于数据库集群和复制的软件集合,包括replication, management, SQL routing, and proxying。Ppc2009大会对这套软件专门做了介绍,下载地址如下:http://sourceforge.net/project /showfiles.php?group_id=256125

tungsten replicator则是这套软件中用于数据复制的一个组件。通过在主从服务器上部署的java程序对主数据库的binlog进行跟踪,并将更新的内容解析出来发送到从服务器,而从服务器的java则将接收到的更新写入从数据库。
/>
 

 

解决在安装有低版本的php mysql客户端连接高版本mysql的问题

在MySQL服务器上用root登录,执行

mysql>set password for user1@”localhost”=old_password('yourPassword');

这是因为:
     原因是因为新版MySQL使用了新的密码验证机制,这需要客户端的版本要在4.0以上,原来的密码函数被改为old_password();,这样使用 password()生成的密码在旧的版本上的客户端就无法使用,而PHP中的MySQL客户端都是3.23的(当然,mysqli的扩展除外),问题就 在这了。
  另外,如果某个MySQL用户密码为空的话,不需要这么做,因为为空并不使用密码函数。

MySQL 4.0升级到MySQL 4.1或更高版本中文乱码解决 不指定

原理
注意:本文档只对MySQL 4.1及以上的数据库版本有效,之前的MySQL版本,由于没有提供对字符集的完整支持,因此也不存在此类问题。

MySQL 4.1开始,对多语言的支持有了很大变化 (这导致了问题的出现)。尽管大部分的地方 (包括个人使用和主机提供商),MySQL 3、4.0 仍然占主导地位;但 MySQL 4.1 是 MySQL 官方推荐的数据库,已经有主机提供商开始提供并将会越来越多;因为 latin1 在许多地方 (下边会详细描述具体是哪些地方) 作为默认的字符集,成功的蒙蔽了许多 PHP 程序的开发者和用户,掩盖了在中文等语言环境下会出现的问题。

MySQL 4.1 对于字符集的指定可以细化到一台机器上安装的 MySQL,其中的一个数据库,其中的一张表,其中的一栏,应该用什么字符集。但是,传统的 Web 程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?

编译 MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
安装 MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

MYSQL字符集问题

前一段时间,一直被mysql的字符集困扰,今天就这方面的知识总结一下.
MySQL的字符集支持(Character Set Support)有两个方面:
     字符集(Character set)和排序方式(Collation)。
对于字符集的支持细化到四个层次:
     服务器(server),数据库(database),数据表(table)和连接(connection)。


1.MySQL默认字符集

  MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。

但是,传统的 程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?

mysql-bin.000001文件的来源及处理方法

  用ports安装了mysql以后,过一段时间发现/var空间不足了,查一下,会发现是mysql-bin.000001、mysql- bin.000002等文件占用了空间,那么这些文件是干吗的?这是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没 有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

这样做主要有以下两个目的:
1:数据恢复
如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
2:主从服务器之间同步数据
主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

处理方法分两种情况:
1:只有一个mysql服务器,那么可以简单的注释掉这个选项就行了。
vi /etc/my.cnf把里面的log-bin这一行注释掉,重启mysql服务即可。
2:如果你的环境是主从服务器,那么就需要做以下操作了。
A:在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
B:使用SHOW MASTER LOGS获得主服务器上的一系列日志。

ubuntu9.10 更换Mysql数据目录

更换Mysql数据目录后, mysql服务器无法启动。
解决方法记录如下

首先,我们看怎么修改mysql的数据文件目录

建新数据库目录
mkdir /media/hda11/db

复制linux下原数据到新目录下
cp -dpR /var/lib/mysql/* /media/hda11/db

给新目录重命属性
chown mysql:mysql /media/hda11/db

修改文件/etc/apparmor.d/usr.sbin.mysqld
:sudo gedit /etc/apparmor.d/usr.sbin.mysqld

/var/lib/mysql r,
/var/lib/mysql/** rwk,

改成
/media/hda11/db r,
/media/hda11/db/** rwk,

修改目录
sudo gedit /etc/mysql/my.cnf

datadir = /var/mysql换成datadir = /media/hda11/db

同步内容