设为首页 加入收藏

TOP

mysql二进制非root用户安装后启动mysqld的路径不对的问题(二)
2014-11-23 20:12:37 来源: 作者: 【 】 浏览:65
Tags:mysql 二进制 root 用户 安装 启动 mysqld 路径 不对 问题
_size = 200M
innodb_log_buffer_size = 8M
default-storage-engine=innodb
innodb_flush_log_at_trx_commit = 1
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
innodb_flush_log_at_trx_commit = 2
[mysqldump]
quick
max_allowed_packet = 16M
[mysqld_safe]
log-error=/home/fc/app/mysql/log/3307/mysqld.log
pid-file=/home/fc/app/mysql/tmp/3307/mysql.pid
[mysql]
no-auto-rehash
port = 3307
socket = /home/fc/app/mysql/tmp/3307/mysql.sock
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
www.2cto.com
[mysqlhotcopy]
interactive-timeout
好了,一切都准备好了,可以启动了
二、启动mysqld进程
进入basedir目录fc/app/mysql
mysql]$ cd bin
bin]$ mysqld_safe --defaults-file=~/my.cnf &
启动成功了,查看进程
ps -ef | grep mysqld 发现问题了
[plain]
fc 7780 7582 24 16:42 pts/10 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=~/my.cnf --basedir=/home/fc/app/mysql --datadir=/home/fc/app/mysql/data/3307/ --log-error=/home/fc/app/mysql/log/3307/mysqld.log --pid-file=/home/fc/app/mysql/tmp/3307/mysql.pid --socket=/home/fc/app/mysql/tmp/3307/mysql.sock --port=3307
发现没有,虽然进入的fc/app/mysql/bin目录下启动的mysqld程序,但是查找进程时候却是运行的/usr/lcoal/mysql下的mysqld,这是为什么呢?
查找了很久的参数,都发现没有配置错误,始终不得其解,如是换了种启动方式:
进入base目录fc/app/mysql
mysql]$ bin/msyqld_safe --defaults-file=~/my.cnf &
这样启动后再查找mysqld进程,一切就正常了,这是为什么呢?
我自己想的原因可能是:
mysqld_safe本身就是mysqld的守护进程,它本身也是一个shell脚本,在脚本中,默认的basedir就是:usr/local/mysql,我们在启动mysqld的时候如果进入了bin目录,则在这个守护进程中是找不到该目录的,如是就去自动匹配/usr/local/mysql/这个目录,刚好我也在这个目录之前装过mysql,于是 系统就自动匹配了这个mysqld程序,运行起来了。
我们查看下mysqld_safe的一段shell代码:
[python]
MY_PWD=`pwd`
# Check for the directories we would expect from a binary release install
if test -n "$MY_BASEDIR_VERSION" -a -d "$MY_BASEDIR_VERSION"
then
# BASEDIR is already overridden on command line. Do not re-set.
# Use BASEDIR to discover le.
if test -x "$MY_BASEDIR_VERSION/libexec/mysqld"
then
ledir="$MY_BASEDIR_VERSION/libexec"
elif test -x "$MY_BASEDIR_VERSION/sbin/mysqld"
then
ledir="$MY_BASEDIR_VERSION/sbin"
else
ledir="$MY_BASEDIR_VERSION/bin"
fi www.2cto.com
elif test -f "$relpkgdata"/english/errmsg.sys -a -x "$MY_PWD/bin/mysqld"
then
MY_BASEDIR_VERSION="$MY_PWD" # Where bin, share and data are
ledir="$MY_PWD/bin" # Where mysqld is
# Check for the directories we would expect from a source install
elif test -f "$relpkgdata"/english/errmsg.sys -a -x "$MY_PWD/libexec/mysqld"
then
MY_BASEDIR_VERSION="$MY_PWD" # Where libexec, share and var are
ledir="$MY_PWD/libexec" # Where mysqld is
elif test -f "$relpkgdata"/english/errmsg.sys -a -x "$MY_PWD/sbin/mysqld"
then
MY_BASEDIR_VERSION="$MY_PWD" # Where sbin, share and var are
ledir="$MY_PWD/sbin" # Where mysqld is
# Since we didn't fi
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇浅析MySQL二进制日志 下一篇彻底关闭并删除mysql二进制日志

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: