想实现以下流程:
MySQL Server安装在Windows机器上,在Windows机器上用虚拟机跑一个Ubuntu。然后尝试在Ubuntu上用MySQLdb连接Windows的MySQL Server。
过程并不顺利,下面一一介绍关键步骤和解决了什么问题。
1.安装MySQLdb
按照 mysqldb安装步骤 这篇文章的介绍,一步步操作,
wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
tar zxvf MySQL-python-1.2.3.tar.gz
$ cd MySQL-python-1.2.3
$ python setup.py build
$ python setup.py install
到最后发现果然出现了文中提到的 EnvironmentError: mysql_config not found错误,按照其提供的解决方法并没有找到mysql_config,发现是因为Ubuntu机器上并没有安装mysql_config,那么接下来就需要:
apt-get install libmysqlclient-dev python-dev
很简单,这一行命令安装所需要的依赖。
安装完之后,就可以用find / -name mysql_config 命令来查看mysql_config文件所在路径,并在mysqldb安装目录中找到setup_posix.py文件,将其中的mysql_config.path改成自己的路径。
这时,Ubuntu上的工作就基本完成了。
2.Mysql server 远程访问权限开启
默认下mysql是不允许远程用户访问的,因此需要在windows上进入mysql命令行:mysql -h localhost -root -p 回车输入密码即可。
进入mysql命令行后,需要创建远程用户并设置权限。
use mysql;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
这样,已经可以用username 和 password 来访问 mysql server了。
3.数据库操作
假设mysql中已经有了数据表tb_lian1
create table tb_lian1(
id int(11) primary key,
name varchar(22) NOT NULL,
location varchar(50)
);
import MySQLdb,sys
try:
conn = MySQLdb.connect(host='XXXXX',port=3306,user='username',passwd='password',db='test')
conn.autocommit(1)
cur=conn.cursor()
cur.execute("insert into tb_lian1 (id,name,location values(1,'xiaoming','China'))")
cur.close()
conn.close()
except Exception, e:
print e
sys.exit(0)
这时,已经有记录插入进表中了。