linux 64 mysql-standard-4.0.23,MySQL在linux下的正确安装[转贴]

1、初始状态

a. /usr/local下有

mysql-standard-4.0.12-pc-linux-i686.tar.gz 安装包

b. /tmp 下没有mysql.sock

c. 机器名为xing (当然每个人不一样)

2、预期目的

a. 安装mysql到 /usr/local/mysql-standard-4.0.12-pc-linux-i686

b. 加上链接/usr/local/mysql

d. 实现mysql开机自动开启服务(进程多了个mysqld)

e. 删除mysql的root和空用户,建立自己的安全帐号

3、步骤(命令是没有一步一步的,请注意每步当前目录)

a.[root@xing local]# cd /usr/local/

b.[root@xing local]# gunzip < mysql-standard-4.0.12-pc-linux-i686.tar.gz | tar -xvf-

(多了/usr/local/mysql-standard-4.0.12-pc-linux-i686 一目录)

c.[root@xing local]# rm -f mysql-standard-4.0.12-pc-linux-i686.tar.gz

删除解压包(我的硬盘空间有限,呵呵!)

d.[root@xing local]# ln -s mysql-standard-4.0.12-pc-linux-i686 mysql

做个链接

e.[root@xing local]# cd mysql

进入到/usr/local/mysql

f.[root@xing local]# groupadd mysql

创建mysql组

h.[root@xing local]# useradd -g mysql mysql

创建mysql用户,并放到mysql组里

本人觉得bin/safe_mysqld -u mysql& 要启动正常要保证两点

(1)、保证safe_mysqld -u mysql& 所用到的mysql这个用户在linux存在.

(2)、因为我们以mysql(linux用户)身份启动mysqld,

所以要保证/usr/local/mysql有权限(把这个目录所有者改为mysql)

若成功启动就会生成/tmp/mysql.sock

i.[root@xing local]# chown -R mysql .

j.[root@xing local]# chgrp -R mysql .

可以通过ls -l 查看/usr/local/mysql 下的文件所有者和组均为mysql

在这之前/usr/local/mysql/data/mysql 下为空

也是系统表并未建立。

k.[root@xing local]# scripts/mysql_install_db

注意一定要在/usr/local/mysql 下运行scripts/mysql_install_db

不能在/usr/local/mysql/scripts 下运行 ./mysql_install_db

可以查看得,此时/usr/local/mysql/data/mysql已经有了系统表了,

但/tmp/mysql.sock还没有建立,因为mysqld还没有启动

l.[root@xing local]# bin/safe_mysqld -u mysql&

结果是Starting mysqld daemon with databases from /usr/local/mysql/data

mysqld ended

用bin/safe_mysqld -u root& 也失败,何解呢?

查看日志得Warning: Ignoring user change to 'mysql' because

the user was set to 'mysql' earlier on the command line

Fatal error: Can't open privilege tables:

Can't find file: './mysql/host.frm' (errno: 13)

因为建立通过scripts/mysql_install_db新建立的系统表,并没有

修改它是所有者,所以根本没法读,但有时不通过用户运行bin/safe_mysqld &

就能运行,是因为不用安全用户启动,当然不存在目录权限问题。

m.[root@xing local]# chown -R mysql data

重新这样弄下/usr/local/mysql/data 所有者,-R 表示连同子目录

n.[root@xing local]# bin/safe_mysqld -u mysql&

现在启动正常

另一个方法是把k.[root@xing local]# scripts/mysql_install_db提前到

i.[root@xing local]# chown -R mysql .

也就是先建立系统表(不存在目录权限),

才再修改目录的所有者,让mysqld启动时能读到/usr/local/mysql/data/mysql这个目录

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

完整命令

cd /usr/local/

gunzip < mysql-standard-4.0.12-pc-linux-i686.tar.gz | tar -xvf-

ln -s mysql-standard-4.0.12-pc-linux-i686 mysql

cd mysql

groupadd mysql

useradd -g mysql mysql

scripts/mysql_install_db

chown -R mysql .

chown -R mysql data //这句可以不要了

chgrp -R mysql .

bin/safe_mysqld -u mysql&

cd bin

./mysql

成功进入

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

以后重启后

cd /usr/local/mysql/

bin/safe_mysqld -u mysql& 启动mysqld(但是必须为root、mysql、或mysql同组的人能启动)

cd bin

./mysql 启动mysql

或者把

cd /usr/local/mysql

bin/safe_mysqld -u mysql&

启动语句放到/etc/rc.d/rc.local最后

这样以后就能直接运行mysql了

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

问题分析:

1、网友问到连接mysql时,提示Can't connect to local Mysql server through socket '/var/lib/mysql/mysql.sock' 原

因是mysqld进程并没有启动成功,可以ls /tmp 找不到mysql.sock 证明mysqld没有启动。

2、bin/safe_mysqld --user=mysql& 启动时,马上停掉,往往是上面所说的权限问题,系统没法读到由

scripts/mysql_install_db建立的系统表,或根本没有执行 来建立系统表,对于前者运行chown -R mysql data,后来就

scripts/mysql_install_db,chown -R mysql data。记住若运行了scripts/mysql_install_db,目录的所有者需要重新改过

来。所以建议在安装mysql时是先运行scripts/mysql_install_db,再运行chown -R mysql data

以上是本人愚见,大家多多指出我的错误!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值