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 这样设置之后就可以运行~~~
首先讲一下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 这样设置之后就可以运行~~~
相关文章推荐
- 常用RAID级别原理和Linux中软RAID实现方式
- linux 块设备驱动 (三)块设备驱动开发
- CentOS6 PXE+Kickstart无人值守安装
- centos下postgresql源码编译安装与主备异步配置
- linux的权限和用户管理
- 在Linux中使用线程
- Linux系统下查看硬件信息命令大全
- linux 下 .sh 文件语法
- Linux 技巧:让进程在后台可靠运行的几种方法
- linux free命令详解
- 《Linux内核分析》 第六节 进程的描述和进程的创建
- Centos搭建Codis集群完整版
- Linux CPU篇
- linux c常用字符串处理函数
- Linux环境中往MySQl数据库导入数据文件乱码问题
- Linux初步学习
- 学Linux决心书
- Linux 技巧:让进程在后台可靠运行的几种方法(转)
- Linux无法登录,显示module is unknown
- Linux C语言实现ls -l