以前弄过一个很方便的一次性安装好mysql以及数据文件配置和python的MySQLdb库的脚本,今天在自己的ubuntu11.10下面用这个安装的时候发现一直报错,昨晚弄了一个晚上,想了想估计是redhat和ubuntu不同导致的。于是今天上午重新弄了下:
1 如果因为不会安装mysql导致登陆不上mysql或者因为XXlock之类的错误的话,可以先用ps -aux | grep "mysql"看看有没有已安装的版本,把服务先停了。在按照:
sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common (非常重要)
来卸载
2 安装mysql。最简洁的方法就是 sudo apt-get install mysql-server。安装的过程中会要求配置root账号和密码。这么安装后mysql就基本上可以用了,但是在/usr/bin/下面会缺少mysql_config文件,后面安装MySQLdb的时候会报错找不到文件。再安装两个包就行了:sudo apt-get install mysql-client 和sudo apt-get install libmysqlclient-dev。
3 下载对应的setuptools-0.6c11-py2.7.egg。ubuntu11.10里面默认安装的python是2.7的,所以要下载对应2.7版本的http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.7.egg。下载后chmod +x 添加可执行权限再sudo ./setuptools-0.6c11-py2.7.egg执行下。
4 我自己安装的MySQLdb是MySQL-python-1.2.3版本的,这个网上很多下载。解压后首先修改site.cfg文件
embedded = False
threadsafe = False
static = False
mysql_config = /usr/bin/mysql_config
这么修改就OK了。
5 在文件夹下面执行sudo python setup.py build和sudo python setup.py install。这个时候可能会报错,出现pymemcompat.h:10: fatal error: Python.h: 没有那个文件或目录。这个时候只需要sudo apt-get install python-dev安装下环境就OK了,在重复5
6 测试。直接python命令进去import MySQLdb看报错与否,不报错就是正常了。附一点测试代码:
import os, sys, string
import MySQLdb
# 连接数据库
try:
conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')
except Exception, e:
print e
sys.exit()
# 获取cursor对象来进行操作
cursor = conn.cursor()
# 创建表
sql = "create table if not exists test1(name varchar(128) primary key, age int(4))"
cursor.execute(sql)
# 插入数据
sql = "insert into test1(name, age) values ('%s', %d)" % ("zhaowei", 23)
try:
cursor.execute(sql)
except Exception, e:
print e
sql = "insert into test1(name, age) values ('%s', %d)" % ("张三", 21)
try:
cursor.execute(sql)
except Exception, e:
print e
# 插入多条
sql = "insert into test1(name, age) values (%s, %s)"
val = (("李四", 24), ("王五", 25), ("洪六", 26))
try:
cursor.executemany(sql, val)
except Exception, e:
print e
#查询出数据
sql = "select * from test1"
cursor.execute(sql)
alldata = cursor.fetchall()
# 如果有数据返回,就循环输出, alldata是有个二维的列表
if alldata:
for rec in alldata:
print rec[0], rec[1]
cursor.close()
conn.close()
-------------------------------------------------------------------------------------------
ubuntu开通ssh服务:
sudo apt-get install openssh-server openssh-client
http://hi.baidu.com/cyb_%D6%E0%CF%A1%CF%A1/blog/item/106bc404aeb35cd17b8947cd.html