您的位置:首页 > 运维架构 > Linux

linux下mysql连接问题

2016-03-31 10:02 393 查看
最近想用python来爬虫,最后将数据存储到数据库中,经过深思熟虑选择了mysql数据库,由于不太习惯使用命令行,最后决定使用一个mysql管理工具,来进行管理,然而这就是悲剧的开始。不过各种环境配置,最后还是运行成功,下面来跟大家分享一下,我遇到过的问题:

首先讲一下mysql的安装,具体步骤可以参考http://jingyan.baidu.com/article/a378c9609eb652b3282830fd.html。

建议大家一步一步来,其中有一些修改当前目录拥有者的命令,常见的错误就是权限问题,不过完全按上面链接中得步骤是没问题。

碰到的第一个问题是

Starting MySQL...... ERROR! Manager of pid-file quit without updating file.

这个问题出错的原因有很多,其中比较常见的就是my.cnf配置的问题和权限问题,这里,我的错误是我将安装文件放在了目录拥有者为root的文件夹下,应该使用root权限来进行操作。

service mysql start启动成功后,就可以登陆mysql,这时最常见的问题就是

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

cd到/tmp文件夹下,发生的确没有mysql.sock,说明数据库的配置文件my.cnf出现了问题。而配置文件有很多,大家可以通过命令

mysql --help | grep my.cnf

在linux系统下查看当前使用的my.cnf,然后mysql会依次按照去这写顺序找cnf文件。找到配置文件之后,将socket=/tmp/mysql.sock 同时去掉前面的#标志,再次启动,成功了。

接下来,讲一下navicat,这时linux下较好的一个mysql管理工具。安装步骤如下:
http://blog.163.com/lgh_2002/blog/static/4401752620134300259/
我这里安装的是官网提供的版本1.1.2,初次启动成功,第二次启动的时候报错,检查原因后发现是不小心将目录权限赋给root,使用root权限后,操作成功。

接下来,我使用python的MySQLdb模块来连接数据库,代码如下:

import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='1234',db='dbname')
cur=conn.cursor()
a=cur.execute('select * from test')
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
执行后显示,

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'。到目录/var/run/mysqld/查看,的确没有找到mysqld.sock.系统没有生成mysqld.sock。这时候将my.cnf配置文件中的socket修改之后,socket=/var/run/mysqld/mysqld.sock 

运行又会报错:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
  /tmp/mysql.sock不存在,但是/var/run/mysqld/mysqld.sock已经生成。这时可以采取创建符号链接:

ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock  这样设置之后就可以运行~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: