处理格局,CentOS下以RPM方式安装MySQL5

mysql更改数据目录步骤与错误(ERROR2002(HY000))处理方法

1,关闭mysql服务:

service mysqld stop

2,创建新建的目录
mkdir -p data

3,把以前的目录转移到新的数据目录

mv /var/lib/mysql/ /data/

4,编辑my.cnf

vi /etc/my.cnf

修改其中的datadir和socket到新的路径

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock

5、修改MySQL启动脚本/etc/init.d/mysql
最后,需要修改MySQL启动脚本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:/data/mysql

本以为修改完启动mysql服务之后就没问题了。

service mysqld start
/etc/init.d/mysql start
但是尽管启动服务没有问题,但是通过mysql客户端连接的时候却报错:

[[email protected]
data]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’ (2)

提示说无法通过socket文件/var/lib/mysql/mysql.sock连接到mysql服务器,也就是说对于mysql程序来说,尽管我把socket文件从/var/lib/mysql/mysql.sock转移到了/data/mysql/mysql.sock我在my.cnf里指定了mysqld知道了,但是对于mysql还是会从默认的安装目录/var/lib/mysql/里找这个mysql.sock文件,找不着,就不知道从哪里启动了。

解决办法一:

ln –s /data/mysql/mysql.sock /var/lib/mysql/

做完软连接,重启mysql服务,再次通过mysql程序连接,没有问题,可以连上了。

[[email protected]
lib]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.77 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input
statement.

mysql>

那说明就是这里的问题了。

方法二:其实不做软链接也是可以的,只需要在/etc/my.cnf里添加[mysql]字段指定socket的位置到我们转移后的位置即可

[mysql]
socket=/data/mysql/mysql.sock

方法三:修改权限

chown -R mysql:mysql /data/mysql/
chmod 660 /data/mysql/test/*

以上几种方法经过试验还是切实可行的,希望对大家更改目录有帮助。

1,关闭mysql服务: service mysqld stop 2,创建新建的目录 mkdir -p data
3,把以前的目录转移到新…

服务器上的mysql默认数据目录为/var/lib/mysql/,同时服务器的/空间不是很大,而近期又有大量的日志需要导入进行分析,时常搞得/的空间捉襟见肘,晚上一狠心就想把mysql的数据目录转移到另外一块硬盘/data中。

CentOS下以RPM方式安装MySQL5.5

于是关闭mysql服务:

首先去mySQL官网下载页面:

Select Platform 选择 Oracle & Red Hat Linux 4 & 5

分别下载以下三个文件(由于我的机器是32位,下面是32位版本的包,如果你的机器是64位的请下载64位版本):

  1. Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package
    MySQL Server

  2. Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package
    Client Utilities

  3. Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package
    Development Libraries

使用wget命令使用断点传输的方式将这三个文件下载

[plain]view plaincopy

  1. wget-c
  2. wget-c
  3. wget-c

下载完成后开始安装:
rpm -ivh MySQL-server-5.5.28-1.rhel5.i386.rpm``rpm -ivh MySQL-client-5.5.28-1.rhel5.i386.rpm``rpm -ivh MySQL-devel-5.5.28-1.rhel5.i386.rpm如果安装途中出错:

[plain]view plaincopy

  1. error:Faileddependencies:
  2. libaio.so.1()(64bit)isneededbyMySQL-server-5.5.28-1.rhel5.x86_64
  3. libaio.so.1(LIBAIO_0.1)(64bit)isneededbyMySQL-server-5.5.28-1.rhel5.x86_64
  4. libaio.so.1(LIBAIO_0.4)(64bit)isneededbyMySQL-server-5.5.28-1.rhel5.x86_64

是依赖库缺少,安装依赖库即可
[plain]view plaincopy

  1. yuminstalllibaio

提示安装完成后,输入mysql 看是否安装成功[plain]view plaincopy

  1. mysql

如果没有反应或者出现如下错误信息:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’ (2)

说明mysql服务还没有启动,输入service mysql start启动mysql服务

[plain]view plaincopy

  1. servicemysqlstart

然后再输入mysql,若出现以下提示信息,说明成功。

[plain]view plaincopy

  1. WelcometotheMySQLmonitor.Commandsendwith;or\g.
  2. YourMySQLconnectionidis1
  3. Serverversion:5.5.16MySQLCommunityServer(GPL)
    1. Copyright(c)2000,2011,Oracleand/oritsaffiliates.Allrightsreserved.
    1. OracleisaregisteredtrademarkofOracleCorporationand/orits
  4. affiliates.Othernamesmaybetrademarksoftheirrespective
  5. owners.
    1. Type’help;’or’\h’forhelp.Type’\c’toclearthecurrentinputstatement.

如果出现错误
[plain]view plaincopy

  1. StartingMySQL….ERROR!TheserverquitwithoutupdatingPIDfile(/var/lib/mysql/lechiexxxxx.pid).

根据错误地址 查看日志文件

这里的地址是 /var/lib/mysql/

日志名称一般为 服务器名.err

打开发现有这么一句:

[plain]view plaincopy

  1. [ERROR]Fatalerror:Can’topenandlockprivilegetables:Table’mysql.host’doesn’texist
  2. 12101215:12:05mysqld_safemysqldfrompidfile/var/lib/mysql/lechiexxxxxx.pidended

所以是少了表。

执行表的初始化

[plain]view plaincopy

  1. /usr/bin/mysql_install_db

之后执行启动还是失败,查看日志:

[plain]view plaincopy

  1. [ERROR]Failedtoopenlog(file’./mysql-bin.000004′,errno13)

应该是没有权限了,赋予mysql权限

[plain]view plaincopy

  1. chown-Rmysql:mysql/var/lib/mysql/

之后重新执行 service mysql start 启动服务,success!

可以启动守护进程

[plain]view plaincopy

  1. /usr/bin/mysqld_safe&

我一般是一直回车几次退出 putty或secureCRT,然后重开一个会话即可

service mysqld stop

【问题】

mysql安装后装到哪里去了?一般在以下文件夹里

/usr/share/mysql/ 或者 /usr/lib/mysql/ 或者 /var/lib/mysql/

可以通过指令:

[plain]view plaincopy

  1. whereismysql

来查看到底安装到哪里去了。

转移mysql数据目录

【初始化设置】

rpm包安装的MySQL是不会安装/etc/my.cnf文件的,解决方法,只需要复制/usr/share/mysql目录下的my-huge.cnf
文件到/etc目录,并改名为my.cnf即可

[plain]view plaincopy

  1. cp/usr/share/mysql/my-huge.cnf/etc/my.cnf

mv /var/lib/mysql/ /data/

【设置密码】

首次安装时,默认密码为空,可以使用如下命令修改root密码,

[plain]view plaincopy

  1. /usr/bin/mysqladmin-urootpassword新密码XXXXX

例如: /usr/bin/mysqladmin -u root password 123456

然后再次登录

[plain]view plaincopy

  1. mysql-uroot–p新密码XXXXX

修改登录密码

这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。

编辑my.cnf

【目录说明】

vi /etc/my.cnf

1、数据库目录

/var/lib/mysql/

修改其中的datadir和socket到新的路径

2、配置文件

/usr/share/mysql(mysql.server命令及配置文件)

[mysqld]
datadir=/data/fuhj/mysql
socket=/data/fuhj/mysql/mysql.sock

3、相关命令

/usr/bin(mysqladmin mysqldump等命令)

本以为修改完启动mysql服务之后就没问题了。

4、启动脚本

/etc/rc.d/init.d/(启动脚本文件mysql的目录)

service mysqld start

【启动与停止】

但是尽管启动服务没有问题,但是通过mysql客户端连接的时候却报错:

1、启动

MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。

/etc/init.d/mysql start

或者

/etc/rc.d/init.d/mysql start

[root@hostXXX data]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’ (2)

2、停止

/usr/bin/mysqladmin -u root -p shutdown

在网上搜了半天也没个所以然,一个个都是相互抄袭,各种拷贝,没有一个靠谱的。

3、自动启动

1)察看mysql是否在自动启动列表中

/sbin/chkconfig –list

2)把MySQL添加到你系统的启动服务组里面去

/sbin/chkconfig – add mysql

3)把MySQL从启动服务组里面删除。

/sbin/chkconfig – del mysql

自己分析了一下,提示说无法通过socket文件/var/lib/mysql/mysql.sock连接到mysql服务器,也就是说对于mysql程序来说,尽管我把socket文件从/var/lib/mysql/mysql.sock转移到了/data/mysql/mysql.sock我在my.cnf里指定了mysqld知道了,但是对于mysql还是会从默认的安装目录/var/lib/mysql/里找这个mysql.sock文件,找不着,就不知道从哪里启动了。

【更改MySQL目录】

MySQL默认的数据文件存储目录为/var/lib/mysql。

假如要把目录移到/home/data下需要进行下面几步:

为了验证我的想法,我首先从转移后的路径做了个软连接指向到mysql的默认目录里,如果mysql程序能连上说明想法是正确的。

1、home目录下建立data目录

cd /home

mkdir data

记得赋予权限:

chown -R mysql:mysql /home/data

ln –s /data/mysql/mysql.sock /var/lib/mysql/

2、把MySQL服务进程停掉:

mysqladmin -u root -p shutdown

做完软连接,重启mysql服务,再次通过mysql程序连接,没有问题,可以连上了。

3、把/var/lib/mysql整个目录移到/home/data

mv /var/lib/mysql /home/data/

这样就把MySQL的数据文件移动到了/home/data/mysql下

[root@host160 lib]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.71 Source distribution

4、找到my.cnf配置文件

如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,

拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

5、编辑MySQL的配置文件/etc/my.cnf

为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。

修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值

为:/home/mysql/mysql.sock 。操作如下:

vi my.cnf ##用vi工具编辑my.cnf文件,找到下列数据修改之

# The MySQL server

[mysqld]

port = 3306

#socket = /var/lib/mysql/mysql.sock
##原内容,为了更稳妥用“#”注释此行

socket = /home/data/mysql/mysql.sock #加上此行

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

6、修改MySQL启动脚本/etc/rc.d/init.d/mysql

最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存

放路径:home/data/mysql。

vi /etc/rc.d/init.d/mysql

#datadir=/var/lib/mysql##注释此行

datadir=/home/data/mysql ##加上此行

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input
statement.

7、重新启动MySQL服务

/etc/rc.d/init.d/mysql start

或用reboot命令重启Linux

如果工作正常移动就成功了,否则对照前面的7步再检查一下。

mysql>

【配置远程访问】

处于安全考虑,Mysql默认是不允许远程访问的,可以使用下面开启远程访问

//赋予任何主机访问数据的权限
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’WITH GRANT OPTION

//使修改生效
mysql>FLUSH PRIVILEGES

如果依然不能远程访问的话,那就很可能防火墙的原因了,可以在防火墙中开启3306端口或者干脆关掉防火墙。

首先去mySQL官网下载页面:
Select Platform 选择
Oracle Red Hat Linux 4 5 分别下载以…

那说明就是这里的问题了。

其实不做软链接也是可以的,只需要在/etc/my.cnf里添加[mysql]字段指定socket的位置到我们转移后的位置即可

[mysql]
socket=/data/mysql/mysql.sock

 

作者: 付海军
出处:
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: