centos从源代码安装mysql

先备忘着,后续再补充。

卸载OpenJDK:
1、http://www.cnblogs.com/zsxfbj/archive/2010/09/22/1833181.html
2、http://blog.csdn.net/cyq1984/article/details/5754958

参考url:
1、http://crazyming.blog.51cto.com/1048571/510659
注:该链接内容有一处错误,【utf8-general_ci】应该是【utf8_general_ci】
2、http://veryi.com/w/509.html
3、http://www.pc-pub.com/article-961-1.html
4、http://xfshean.blog.163.com/blog/static/602065662011101101653926/
5、http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

一、先下载cmake
1、wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
2、tar xvf cmake-2.8.4.tar.gz
3、cd cmake-2.8.4
4、./configure
5、make
6、make install

二、进入mysql安装包所在目录,执行命令
1、CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"
2、开始用cmake编译
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5/ \
-DMYSQL_DATADIR=/var/mysql \
-DMYSQL_UNIX_ADDR=/var/mysql/mysqld.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_TCP_PORT=3306 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=/var/mysql/mysql.sock \
-DMYSQL_USER=mysql \
-DWITH_DEBUG=0

如果出现以下警告:
CMake Warning: The variable, 'MYSQL_USER', specified manually, was not used during the generation.
需要把预编译里面的MYSQL_USER去掉再编译

3、make
注:如果用nohup make则所有输出会到同目录下的nohup.out文件
4、make install

三、安装完毕,初始化数据库,报找不到mysql_print_defaults文件,结果报错。
1、应该在my.cnf文件的【mysqld】一节,加上basedir和datadir定义
2、为mysql.mysql用户添加/var/mysql目录和/usr/local/mysql5.5/data的所有权
3、初始化数据命令:
./mysql_install_db --user=mysql --basedir=/usr/local/mysql5.5 --datadir=/var/mysql --defaults-file=/etc/my.cnf

在my.cnf里使innodb有效,启动时发生如下错误
120421  6:30:26  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/mysql-DMYSQL_UNIX_ADDR=/var/mysql/mysqld.sock/ibdata1
貌似my.cnf配置文件有错,将-DMYSQL_UNIX_ADDR=/var/mysql/mysqld.sock注释掉
注:2012/8/29,是因为编译的时候【-DMYSQL_DATADIR=/var/mysql \】最后【\】前没有空格

2012/11/27,启动时报告错误:
InnoDB Error ib_logfile0 of different size
解决方案:将/var/mysql/下的ib_log*文件是删除

仍旧报告错误:
MySQL Plugin 'InnoDB' init function returned error.
解决方案:将/var/mysql/所有文件删除,然后再执行初始化数据命令

然后在my.cnf将innodb引擎打开,启动报错:
InnoDB: Error: data file /var/mysql/ibdata1 is of a different size
解决方案:将/var/mysql/所有文件删除,然后再执行初始化数据命令,然后启动成功

复制配置文件
cp support-files/my-huge.cnf /etc/my.cnf

复制启动脚本
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

四、服务器启动之后,更改root口令
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

五、允许其他ip接入
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "MyNewPass";

安装myql的udf,lib_mysql_xql
必须先安装libxml2,默认安装即可。
yum install libxml2

1、配置文件有错,需修改
lib_mysqludf_xql的configure文件有有错误:
      if test -f "$XML2_DIR/$i/libxml"; then
应该改为以下语句:
      if test -f "$XML2_DIR/$i/libxml/uri.h"; then

2、configure脚本
./configure --prefix=/usr/local/mysql5.5 --with-mysql=/usr/local/mysql5.5/bin/mysql_config --with-libxml2=/usr;

3、make
4、make install;
5、安装函数到mysql:/usr/local/mysql5.5/bin/mysql -u root -pxxxxxx < installdb.sql
之后.so文件会在mysql的plugin目录下生成,重启mysql就ok
6、重启之后执行xql的installdb.sql文件,在mysql数据库生成函数

安装memcached需要libevent支持,需安装libevent-devel包
然后./configure --with-libevent=/usr;
此时memcached安装在/usr/local/bin目录下。

启动:/usr/local/bin/memcached -d -m 1000 -u root -p 12000 -c 1024 -P /tmp/memcached.pid
memcached启动参数说明:
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.1.2,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
2.如果要结束Memcache进程,执行:
kill `cat /tmp/memcached.pid`

数据导入之后空间不够,给虚拟硬盘扩容(需virtualbox4.0版本以上)
导入时磁盘满的话,执行sql命令会返回28错误,估计应该是表示磁盘空间不足
参考:
1、http://www.lirui.name/post/202.html
2、http://hi.baidu.com/iamcyh/blog/item/37f2573f3d3120e5828b132b.html
3、http://www.21andy.com/blog/20120523/2031.html

数据导入时,需要在目标数据库上执行:
set global log_bin_trust_function_creators=1;
否则存储过程中的function可能无法导入

数据运行久了产生的bin日志,用如下方式清除
参考:
1、http://jk.aiwaly.com/wp/%E5%A6%82%E4%BD%95%E6%B8%85%E9%99%A4mysql%E7%9A%84mysql-bin%E6%97%A5%E5%BF%97-2.html

服务器ipv6不知何故被启用,用如下方式停止
参考:
1、http://www.cyberciti.biz/faq/redhat-centos-disable-ipv6-networking/
2、http://blog.sina.com.cn/s/blog_501dcd710100y3nn.html
注:执行【rmmod ipv6】时可能会报告模块被占用,不用理会,直接reboot重启系统

安装完服务,需要开放相应端口
http://os.51cto.com/art/201003/192211.htm

更改centos服务器时间:
如下是CentOS系统使用NTP来从一个时间服务器同步
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate us.pool.ntp.org
第一句是把当前时区调整为上海就是+8区,想改其他时区也可以去看看/usr/share/zoneinfo目录;
然后第二句是利用ntpdate同步标准时间.

如何在MySQL使用全局变量,有一个udf
http://www.pureftpd.org/project/mysql-udf-global-user-variables/download

建立数据库时,数据库名务必全部用字母+数字,不要用[-][_]等特殊字符

执行语句时出错:
Failed to load routine erp.f_sso_rel_user_entity_array. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
原因:mysql安装了udf之后,有些udf会更改plugin的位置,导致之前安装的udf找不到相应的.so文件。一般在lib下的plugin目录,有些udf会安装到lib下的mysql/plugin目录,两个目录互相软链接即可解决
同样,在mysql.proc表里,该函数是存在的,但是在查询窗口执行该函数时却报告找不到,这时一般也是同样的原因:关联的.so文件找不到

猜你喜欢

转载自glovebx.iteye.com/blog/1493275