日期:2014-05-16  浏览次数:20745 次

Mysql 编译安装
编译安装


编译安装之前的准备工作:
添加mysql帐号
# useradd mysql
目的:避免数据库初始化出现问题


安装:
[root@www bin]# tar xvzf mysql-5.1.34.tar.gz -C /usr/local/src/
[root@www lamp]# cd /usr/local/src/
[root@www src]# cd mysql-5.1.34/
[root@www mysql-5.1.34]# ./configure --with-mysqld-user=mysql --prefix=/usr/local/mysql --with-extra-charsets=all --exec-prefix=/usr/local/mysql --with-innodb

                       // 运行mysql的时候用哪个身份执行  安装目录    默认支持所有字符集   安装目录会产生一个bin    表类型
[root@www mysql-5.1.34]#make && make install 



初始化数据库:
[root@www mysql-5.1.34]# cd /usr/local/mysql/
[root@www mysql]# ls
bin  docs  include  lib  libexec  mysql-test  share  sql-bench   // 目录里应该有一个默认的存放mysql数据的var目录,进行数据库的初始化才能产生
[root@www mysql]# cd bin
[root@www bin]# ./mysql_install_db 进行数据库的初始化



修改权限:
[root@www mysql]# chown .mysql -R .      // 递归修改当前目录(mysql安装目录)所有文件的所属组为mysql组
[root@www mysql]# ll -d .   // 查看当前目录的详细信息     -d 将目录象其它文件一样列出,而不是列出它们的 内容
drwxr-xr-x 11 root mysql 4096 12-25 11:58 .
[root@www mysql]# chown mysql var -R    // 递归修改var目录的所有者为mysql帐户



启动:
[root@www mysql]# cd bin/
[root@www bin]# ./mysqld_safe --user=mysql &   // 后台启动mysql
[root@www bin]# ps -e  
22127 pts/1    00:00:00 mysqld_safe
22178 pts/1    00:00:00 mysqld
看到这两个进程就说明mysql已经启动成功了
启动之后也会产生一个套接字文件
[root@www bin]# cd /tmp/
[root@www tmp]# ls mysql.sock
mysql.sock
在/tmp下,如果有了这个文件,也说明mysql已经启动了,没有这个文件,mysql是不会启动的


----------------

修改环境变量:
修改家目录的环境变量,可以在任意目录下执行mysql bin目录下的命令
[root@www ~]# vim .bash_profile
 PATH=/usr/local/mysql/bin:$PATH:$HOME/bin
使之生效:
[root@www ~]# source .bash_profile
测试:
[root@www ~]# which mysqladmin
/usr/local/mysql/bin/mysqladmin



[root@www ~]# pkill mysql     // 杀死有mysql的进程

另一种启动mysql的方法:把mysql自己的启动脚本拷贝到init.d里面
[root@www mysql]# pwd
/usr/local/mysql/share/mysql
[root@www mysql]# cp mysql.server /etc/rc.d/init.d/    // 可以改名的比如说改成mysqld
[root@www mysql]# service mysql.server restart

--------------------


问题排查:
如果数据库初始化没成功,可能是下面的原因:
[root@www mysql]# grep mysql /etc/passwd 首先要有mysql这个用户
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
[root@www mysql]# /etc/init.d/mysqld stop  原来装了一个mysql 的rpm包,而且启动了,先停掉
停止 MySQL:                                               [确定]
[root@www mysql]# rpm -q mysql 把原来装的rpm包卸载掉
mysql-5.0.45-7.el5
[root@www mysql]# rpm -e mysql --nodeps

[root@www bin]# ./mysql_install_db

[root@www bin]# cd ..
[root@www mysql]# ls
bin  docs  include  lib  libexec  mysql-test  share  sql-bench  var
这时候就看到有一个var产生了