linux下源码搭建php环境之mysql(一)


现在已经大半夜了,五一劳动节挺无聊的。

折腾一下吧,实在是睡不着。于是乎在电脑上安装个虚拟机,然后呢,在虚拟机上搭建一个php环境。

首先我得安装MYSQL吧。发现遇到的问题真多。。待我娓娓道来。

以下是在某网站上找到的安装步骤:

主要介绍linux操作系统下mysql源码进行纯手动安装,如果你对linux操作系统下MySQL源码进行纯手动安装的实际操作流程感兴趣的话,你不妨浏览以下的文章。

1.实现linux下纯手动MySQL源码安装,首先要下载MySQL的源码,我下载的是MySQL-5.0.87.tar.gz

2.解压tar –xvfMySQL-5.0.87.tar.gz

3.进入MySQL-5.0.87

4.检测环境并指定安装目录:./configure--prefix=/usr/local/MySQL

5.编译:make

6.安装:sudo make install

7.实现linux下纯手动MySQL源码安装中要进行配置。首先可以看到安装完的目录如下

在share/MySQL下打命令:ls –l | grepmy-

出来的都是MySQL的配置文件,按照需要选择其中一个拷到/etc下命名为my.cnf

/etc/my.cnf是MySQL默认读的配置文件的路径

8.修改var的可写权限。这是MySQL的数据库数据文件存放的位置,因为用当前用户来运行MySQL的后台程序可能没有这个目录的可写权限。

chmod 777 ./var –r

9.配置系统环境变量,使得可以直接执行MySQL的程序

系统的环境变量是放在/etc/profile下的,而用户的环境变量是放在用户的根目录下的.bashrc下

/etc/profile的配置:

PATH=/usr/local/MySQL/bin:$PATH PATH=/usr/local/MySQL/libexec:$PATH

10.在启动MySQLd之前要先初始化它,执行MySQL_install_db

11.直接打mysqld_safe&启动mysql,因为之前配置过环境变量

12.直接MySQL进入MySQL的命令行控制。默认是以当前用户名登录的,默认root是没有密码的

13.设置root的密码:MySQLadmin –u rootpassword ‘123456’

14.以root身份登录:MySQL –uroot–p

15.设置远程登录数据库。用户创建后默认是只能在本地登录的。

update user set Host='%’ where user=‘guoyu';

这句是将guoyu这个用户的允许登录的地址改成任意,但不包括本地。也就是说这样guoyu这个用户就无法在本地登录了,只能远程登录。

只有root用户才能执行这句,所以要先以root用户登录到本地数据库才行。

flush privileges;

16.停止mysql:mysqladminshutdown

要再执行这句刷新缓存才能生效。以上的相关内容就是对linux下纯手动MySQL源码安装的介绍,望你能有所收获。

过程中遇到如下问题:

遇到的问题一:

No targets specified and no makefile found. Stop.
解决:
yum install gcc gcc-c++ autoconf automake

遇到的问题二:

Permission denied
Permission denied in linux

在linux上安装有些东西时会出现 Permission denied 的情况:以下就是
解决:
编辑/etc/selinux/config,找到这段:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing


把 SELINUX=enforcing 注释掉:#SELINUX=enforcing ,然后新加一行为:
SELINUX=disabled
保存,关闭。
......

编辑/etc/sysconfig/selinux,找到:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing

如果SELINUX已经是 SELINUX=disabled,那么就不用改了,否则就把

SELINUX=enforcing 注释掉,新加一行:
SELINUX=disabled
保存,退出。

如果你碰到其他类似提示:
cannot restore segment prot after reloc: Permission denied
哪应该是SELinux的问题,可以考虑把它关闭。
----------------------------------------------------------------
---------------------
郁闷的是.我把SELinux关闭后还是不行.于是到google上search.发现这个

很有用.
在你保证SElinux 被disable后.还执行下
chcon -t texrel_shlib_t
如: chcon -t texrel_shlib_t /路径/路径/名字.so (这个文件视具体执行文件.)
以上两步.已经解决了很多server的问题了.

遇到的问题三:

没有ROOT权限

解决:

打开终端,在终端中输入[root@localhost ~]# su

遇到的问题四:

在tar,./configure,make,make install 经典四步时,从来没有想过其中的过程,只觉得像例行公事一样,做就是了。
不幸的是,这次在./configure后,make时出现以下错误:
make: *** No targets specified and no makefile found. stop.

解决:
在网上找到相关资料,确认是./configure出了问题,于是回头查看,果然发现问题:最后几行出了错。完整错误信息如下:
checking for tgetent in -lncurses... no
checking for tgetent in -lcurses... no
checking for tgetent in -ltermcap... no
checking for tgetent in -ltinfo... no
checking for termcap functions library... configure: error: No
curses/termcap library found

原因:
缺少ncurses安装包

解决办法:
下载安装相应软件包
一、如果你的系统是RedHat系列:
yum list|grep ncurses
yum -y install ncurses-devel
yum install ncurses-devel

二、如果你的系统是Ubuntu或Debian:
apt-cache search ncurses
apt-get install libncurses5-dev

待安装completed!之后,再./configure,顺利通过,然后make && make
install,成功安装,一切OK!~~

遇到的问题五:

bash: mysql: command not found
解决:
第一个问题,是因为你的mysql命令的路径在/usr/local/mysql/bin下面,所以你直接使用mysql命令时,系统在/usr/bin下面查此命令,所以找不到了,解决办法是 ln -s /usr/local/mysql/bin/mysql /usr/bin 做个链接即可,
第二个问题是你因为你没有指定密码参数而至,应这样 mysql -uroot -p
或者直接使用相对路径./mysql -uroot -p123456

擦汗了一把,安装一个MYSQL遇到了这么多问题。幸好到最后安装成功了。

最后总结了一下安装过程:

1.完成linux系统下纯手动MySQL源码的安装,首先要下载MySQL的源码,我下载的是MySQL-5.0.87.tar.gz

2.解压tar –xvf MySQL-5.0.87.tar.gz

3.进入MySQL-5.0.87

4.检测环境并指定安装的目录:./configure --prefix=/usr/local/MySQL 检测出来缺什么那就安装什么。如果连gcc和g++都没有,没有编译器的话就要直接下载rpm包(已编译好的二进制文件)再安装到系统。 如下是安装gcc的命令(要先去下载这个包,这个地址有比较多的rpm包下载http://mirror.oa.com/SLES10-SP1-RPMS-32/):

sudo rpm -ivh gcc-4.1.2_20070115-0.11.i586.rpm

安装这些rpm包的过程中有些是已安装的,或者是自己依赖自己导致安装不了,反正安装不了就用强制安装并忽略依赖的命令

sudo rpm -ivh gcc-4.1.2_20070115-0.11.i586.rpm –-force –nodeps

可能进过安装一系列的rmp包后,终于完成了环境检测。。。。。。

5.编译:make

6.安装:sudo make install

7.实现linux下纯手动MySQL源码安装中要进行配置。首先可以看到安装完的目录如下 在share/MySQL下打命令:

ls –l | grep my-

出来的都是MySQL的配置文件,按照需要选择其中一个拷到/etc下命名为my.cnf /etc/my.cnf是MySQL默认读的配置文件的路径

8.修改var的可写权限。这是MySQL的数据库数据文件存放的位置,因为用当前用户来运行MySQL的后台程序可能没有这个目录的可写权限。

chmod 777 ./var –r

9.配置系统环境变量,使得可以直接执行MySQL的程序 系统的环境变量是放在/etc/profile下的,而用户的环境变量是放在用户的根目录下的.bashrc下 (1) /etc/profile的配置:PATH export PATH其中/usr/local/mydql/bin是MySQL主要的可执行程序的目录,而libexec是放MySQL的后台主程序MySQLd的。

(2).bashrc的配置:

set PATH=/usr/local/MySQL/bin:$PATH

set PATH=/usr/local/MySQL/libexec:$PATH

export PATH这里注意.bashrc里面是要加个set的。配置完后重登录就可以生效了

10.在启动MySQLd之前要先初始化它,执行MySQL_install_db

11.启动MySQLd,直接打MySQLd就可以了,因为之前配置过系统环境变量了

12.直接MySQL进入MySQL的命令行控制。默认是以当前用户名登录的,默认root是没有密码的

13.设置root的密码:MySQLadmin –u root password ‘123456’

14.以root身份登录:MySQL –uroot –p

15.设置远程登录数据库。用户创建后默认是只能在本地登录的。 update user set Host='%’ where user=‘guoyu'; 这句是将guoyu这个用户的允许登录的地址改成任意,但不包括本地。也就是说这样guoyu这个用户就无法在本地登录了,只能远程登录。 只有root用户才能执行这句,所以要先以root用户登录到本地数据库才行。 flush privileges; 要再执行这句刷新缓存才能生效。以上的相关内容就是对linux下纯手动MySQL源码安装的介绍,望你能有所收获。

最后在网上找的MYSQL配置的相关资料:

1. 配置开机启动服务
/sbin/chkconfig httpd on [设置apache服务器httpd服务开机启动]
/sbin/chkconfig –add mysqld [在服务清单中添加mysql服务]
/sbin/chkconfig mysqld on [设置mysql服务开机启动]
/sbin/service httpd start [启动httpd服务,与开机启动无关]
/sbin/service mysqld start [启动mysql服务,与开机无关]

2. 设置mysql数据库root帐号密码。默认的初始化密码为空~~~
mysqladmin -u root password ‘new-password’ [引号内填密码]

3. 让mysql数据库更安全
mysql -u root -p
mysql> DROP DATABASE test; [删除test数据库]
mysql> DELETE FROM mysql.user WHERE user = ”; [删除匿名帐户]
mysql> FLUSH PRIVILEGES; [重载权限]
4.安装上mysql扩展
yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
5.设置默认编码等一些初始参数(my.cnf)
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
default-character-set=utf8 [添加]
default-storage-engine=INNODB [添加]
old_passwords=1
[client]
default-character-set=utf8 [添加]
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 

相关内容