之前写过一篇《Ubuntu 安装Postgres数据库,Windows 安装PgAdmin进行远程管理,Django远程连接 手记》,这次使用MySQL实现相同的功能,上篇详见:
http://blog.csdn.net/quicktest/article/details/7257715
Ubuntu通过SSH操作:
1. 安装MySQL Server:
sudo apt-get install mysql-server
配置MySQL:
2. 注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果你要其他机器也能够访问的话,那么需要改变/etc/mysql/my.cnf配置文件了!下面我们一步步地来:
默认的MySQL安装之后根用户是没有密码的,所以首先用根用户进入:
$mysql -u root
(如果在安装时设置了root密码,那么需要:$mysql -u root -p)
3. 用root用户建立你所需要的数据库。我这里就以automation为例:
mysql>CREATE DATABASE automation;
4. 如果你想进行远程访问或控制,那么你要做两件事:
其一:
mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "Password";
允许root用户可以从任意机器上登入MySQL。
其二:
$sudo gedit /etc/mysql/my.cnf
老的版本中
>skip-networking => # skip-networking
新的版本中
>bind-address=127.0.0.1 => bind-address= 0.0.0.0
这样就可以允许其他机器访问MySQL了
5. 再重启mysql : sudo /etc/init.d/mysql restart
Windows操作:
1. 安装MySQL
http://www.mysql.com/downloads/
WorkBench操作如下:
2. “New Connection”
Connection Name 随便起一个
Host Name 为Linux的IP地址
User Name是“root”
Password是设置过的password
3. 点击“Test Connection”
哈哈,大功告成,连接上了
Django一同工作:
1. 需要在本地(调试)和服务器端分别装上python-mysqldb
Ubuntu命令:apt-get install python-mysqldb
Windows安装包:可以搜“MySQL-python-1.2.3.win32-py2.7.exe”
SourceForge地址:http://sourceforge.net/projects/mysql-python/
2. 安装完后试一下:
root@sha-essqa-linux:~# python
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb as mdb
>>> con = mdb.connect('localhost','用户名','密码','数据库名')
>>> cur = con.cursor()
>>> cur.execute("select version()")
1L
一切正常
3.设置Django的settings.py:
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名', # Or path to database file if using sqlite3.
'USER': '用户名', # Not used with sqlite3.
'PASSWORD': '密码', # Not used with sqlite3.
'HOST': 'LinuxIP地址', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306',
在Shell输入: python manage.py validate
“0 error”显示表示一切正常,大功告成
注意:
不过在做syncdb的时候发现一个Django至今未解决的问题:使用Django设置models.py时无法使用“unique”关键字设置唯一约束
官方bug:https://code.djangoproject.com/ticket/2495
所以建议大家还是用Postgres为宜,毕竟MySQL被Oracle收购后前途未卜啊