首页 > 未分类 > LAMP-MySql源码安装

LAMP-MySql源码安装

Aug 4th,2009 发表评论

版本:mysql-5.1.36.tar.gz

环境:RedHat5.3

在RedHat下有很好用的MySaql rpm包,二进制分发版比源码分发版更容易安装。但想要将mysqld配置一些标准二进制分发版中已经包括的一些特殊特征。例如,一般编译过的分发版支持所有字符集。如果你想要一个更小的MySQL服务器,可以重新编译只支持你需要的字符集。就需要用到源码安装。

下面就开始吧
必要家伙(一般都有,没有的自己装)

  1. 一个适当的tar解包分发版
  2. 一个能工作的ANSI C++编译器(自己用rpm -aq|grep gcc查下),建议使用gcc 2.95.2或更新版。
  3. 一个优秀的make程序,推荐试一试GNU make3.75或更新版。

1.把获得的MySQL源码包mysql-5.1.36.tar.gz复制到/opt目录下开始解压
[root@tiham.com /]# cd /opt
[root@tiham.com opt]# tar zxvf ./ mysql-5.1.36.tar.gz

2.为MySQL创建独立用户,一般来说这种独立运行的数据库都要创建一个独立的系统用户,有些数据库是必须要独立系统用户的。
[root@tiham.com /]# useradd mysql -d /opt/mysql-5.1.36
[root@tiham.com /]# chown -R mysql.mysql /opt/mysql-5.1.36

3.创建2个重要目录(数据和连接)
数据目录用于存放MySQL的所有数据,而连接目录是存放MySQL运行时的socket文件
[root@tiham.com /]# su – mysql 先切换到mysql用户
[mysql@tiham.com ~]$ mkdir ./data
[mysql@tiham.com ~]$ mkdir ./tmp

4.开始预编译(可直接复制下面参数)
[root@tiham.com /]# su – root 回到root
[mysql@tiham.com ~]$ ./configure –prefix=/opt/mysql –localstatedir=/opt/mysql/data –with-unix-socket-path=/opt/mysql/tmp/mysql.sock –with-mysqld-user=mysql -enable-large-files –with-big-tables –with-charset=utf8 –with-extra-charsets=latin1,latin2,latin5,latin7,gb2312,gbk
说明:
–prefix参数是指定mysql的安装目录
–localstatedir是指定mysql数据的存放目录
–with-unix-socket-path是指定socket文件的存放路径
–with-mysqld-user是指定使用用户
其它的参数自己去看,可以用configure –help查看可以使用的所有参数

5.开始编译
[mysql@tiham.com ~]$ make
此过程相对来说会比较长,当然也跟机器的硬件配置有关

6.开始安装
[mysql@tiham.com ~]$ make install
#此步骤完成后MySQL软件就安装到系统了,安装过程与Windows下的安装有些不同,由于是源码包安装,因此很多参数都是要手工设置的。

7.安装完的重要设置–进行初始化数据操作
[mysql@ tiham.com ~]$ /opt/mysql/scripts/mysql_install_db -datadir=/opt/mysql/data
#此步骤创建2个系统初始数据库:mysql和test

8.如果你想要设置一个选项文件,使用support-files目录中的一个作为模板。例如:
[mysql@tiham.com ~]$ cp /opt/mysql/support-files/my-medium.cnf /etc/my.cnf

9.(可选)环境变量#由于mysql放置的位置在/usr/local/mysql中,而这个目录不在PATH当中,且man page也不在MANPATH里面,所以要手动加入。
[root@tiham.com mysql]# vi /etc/profile
找到export PATH…那一行,加入这么句:
PATH=”$PATH”:/usr/local/mysql/bin
#记得要logout,这个命令在下次开机也可以用了。
[root@tiham.com mysql]# vi /etc/man.config
#可以在这个文件的任何地方加入这么一行:
MANPATH /usr/local/mysql/man

10.(可选)开机后立即启动:
[root@tiham.com mysql-5.1.36]# vi /etc/rc.d/rc.local
#将下面这一行加入到最后一行
cd /usr/local/mysql-5.1.36; /usr/local/mysql-5.1.36/bin/safe_mysqld –user=mysql &
#记得加上cd /usr/local/mysql-5.1.36;并在改句后面加个空格,不然会导致无法自动在开机的时候启动(让我郁闷了好久)。

11.启动mysql服务
[mysql@ tiham.com bin]]$bin/mysqld_safe -user=mysql &
#这个时候mysql会建立一个/tmp/mysql.sock,可以先等会儿不要急着按enter。这个socket file是动态生成的,不可以
被移动,复制,没它mysql是启动不了的。

#可以用netstat -tl查看是否在运行
[mysql@tiham.com ~]]# netstat -tl | grep mysql
  tcp 0 0 *:mysql *:* LISTEN
  #这样就搞定了,mysql已经在监听了。
#停止mysql服务
mysqladmin shutdown -uroot -proot

12.修改密码
mysqladmin -uroot -proot password ‘root’ (刚装完时root密码为空,而且不允许远程连接)

可能的问题:
1.连接时提示:Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’
原因:其实这种情况下可能服务已经启动,mysql.sock是资料接口档,用我们的习惯应该是套接字文件(sockets),这种文件一般用在网络上的资料套接,mysqld守护进程生成了这个文件,其他与mysql相关的程序想使用mysql,估计就是通过这个文件了。启动不了因为mysql.sock没正常生成
解决:查看MySql安装目录下的mysql.sock路径,连接时用mysql –socket=/var/lib/mysql/mysql.sock …就可以,或者去改/etc/my.cnf文件,还可以来个ln -s。

2.添加一个允许远程登陆用户:
mysql>grant select,insert,update,delete on *.* to tiham.com@”%” Identified by “abc”;
允许用户本地登陆:
mysql>grant all privileges on *.* to tiham.com@localhost identified by “abc”;

3.使用Navicat连接Linux 下的MySQL遇到的问题
Error1: 2003:Can’t connect to MySQL server on ‘localhost’
解决方法:关闭Linux的防火墙功能,或者设置容许TCP协议的3306端口通过,可以下使用如下命令开启TCP协议的3306端口
iptables -I INPUT -p tcp –dport 3306 -j ACCEPT
Error2: 1130 – Host’ClientIP’ is not allowed to connect to this MySQL server
解决方法:使用root 用户登陆Linux,登陆MySQL的root用户,更改容许登陆的IP地址范围。
mysql>grant all privileges on *.* to ‘root’@’%’ identified by ‘rootpasswd’ with grant option;
这段指令容许所有用root用户输入密码登陆该mysql server,如果将’%’ 换乘’192.168.1.100′ ,那么只有’192.168.1.100’的主机可以登陆。

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: LAMP-MySql源码安装
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.