django连接mysql mysql安装
参考了多处,加上自己总结,终于配置好了,小激动
1、安装mysql:
INSTALL上的安装步骤
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip <> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf (我没加)
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql (第一次初始化授权)
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql & (启动)
讲一下我碰到的问题
./configure --prefix=/usr/local/mysql --enable-assembler --enable-thread-safe-client --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --with-charset=`gb2312'
(我尝试过不同的选项,--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock没用,后来装上了还是/tmp/mysql.sock,--with-charset=`gb2312'用这个到后来显示不支持。。)所以去掉了这两个选项,不过最初我安装时一个都没加选项,似乎也可以。
sudo make ——so long time
sudo make install
sudo bin/mysql_install_db --user=mysql
shengyan@LIZZIE:/usr/local/mysql$ sudo chown -R root .
shengyan@LIZZIE:/usr/local/mysql$ sudo chown -R mysql var
shengyan@LIZZIE:/usr/local/mysql$ sudo chgrp -R mysql .
shengyan@LIZZIE:/usr/local/mysql$ sudo bin/mysqld_safe --user=mysql &
接着
bin/mysql -u root -p (输入密码后就可以进入mysql了
但直接输入mysql说ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)是不是没装client??
一些其他的~
mysqladmin version
kill `sudo cat var/HOSTNAME.pid` 停止
sudo bin/mysqld_safe --user=mysql --skip-grant-tables & 不加授权的启动,当密码忘记了可以用这个,进入后再改
sudo bin/mysqladmin -h localhost flush-privileges 更新授权表
sudo bin/mysqladmin -u mysql stop
sudo bin/mysqladmin -u root -p stop????
shengyan@LIZZIE:/usr/local/mysql$ bin/mysql -u root -p*******(作为root)
***************************
网上的资料
如果你忘记了你的MYSQL的root口令的话,你可以通过下面的过程恢复。
1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。
kill `cat /mysql-data-directory/hostname.pid`
你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。
2. 使用`--skip-grant-tables' 参数来启动 mysqld。
3. 使用`mysql -h hostname mysql'命令登录到mysqld server ,用grant命令改变口令。
也可以用use mysql; update user set password =password('yourpass') where user='root'
也可以这样做:mysqladmin -h hostname -u user password 'new password'
4. 载入权限表: mysqladmin -h hostname flush-privileges ,或者使用 SQL 命令`FLUSH PRIVILEGES'。
重启mysqld
2、安装MySQL_python(http://www.djangobook.com/en/beta/chapter05/)
下载后
$ tar xfz MySQL-python-1.2.1.tar.gz
$ cd MySQL-python-1.2.1
$ # edit site.cfg if necessary (编辑mysql_config = /usr/local/mysql/bin/mysql_config为你系统的路径)
$ python setup.py build
$ sudo python setup.py install # or su first
没什么错误的话就安装好了,可以测试
python shell中
import MySQLdb没错误就表示已经有这个模块了,可以继续。。。
1、下载mysql-python
官网地址: http://sourceforge.net/projects/mysql-python/
# cd /usr/local
# wget http://nchc.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
2、解压
# tar -zxvf MySQL-python-1.2.2.tar.gz
# cd MySQL-python-1.2.2
3、在安装前要做下面几步
a、修改setup_posix.py中的mysql_config.path为你mysql安装目录的mysql_config路径
mysql_config.path = "/usr/local/mysql/bin"
(注:mysql_config是一个命令文件,用于编译mysql客户端程序,在进行这一步之前先确定自己是否已经安装libmysqld-dev,否则会在安装的过程中会出现“mysql_config not found”这样的字样。
安装libmysqld-dev命令如下:
- sudo apt-get install libmysqld-dev
修改setup_posix.py中的mysql_config.path为你mysql安装目录的mysql_config路径 ‘/usr/local/mysql/bin/mysql_conf’
/////这个文件想修改但是一直保存不了 修改了都写和用户权限还是不行,就没修改了
b、修改site.cfg中的threadsafe = False,mysql_config = /usr/local/mysql/bin/mysql_config
c、执行命令:(注意这个地方,三条命令都执行)
# export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql
# ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so /usr/lib/libmysqlclient.so.14
# ldconfig (这个重要)
否则后面会报错ImportError: libmysqlclient.so.14: cannot open shared object file
4、build和install
//这里好像少工具,我用的是ubuntu11.10 ,sudo apt-get install python-setuptools 安装个工具
# python setup.py build
(这一步我出错了,出错信息如下:
解决方法:
输入命令
- sudo apt-get install python-dev
再重复上步
)# python setup.py install
5、使用
# python
# >>> import MySSQLdb
如果报错
/usr/lib/python2.3/site-packages/MySQL_python-1.2.2-py2.3-linux-i686.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /usr/lib/python2.3/site-packages/MySQL_python-1.2.2-py2.3-linux-i686.egg/_mysql.pyc, but /usr/local/src/MySQL-python-1.2.2 is being added to sys.path
原因是,install后MySQLdb模块已经被放到python的site-pachages目录中;但我在当前目录也存在相同的模块,所以可能会重复导入。只要切换到其他目录运行python就可以了。
参考
http://www.cnphp.info/mysql-python-install-record.html mysql-python安装记录
http://blog.csdn.net/jiuduan2009/article/details/6679290 最新linux下安装mysql-python(转载+部分补充)
进入mysql新建一个数据库Blog,并且 GRANT ALL PRIVILEGES ON Blog.* TO lizzie@localhost IDENTIFIED BY '*******' WITH GRANT OPTION;
退出mysql进入一个工程,修改settings.py
DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = 'Blog' # Or path to database file if using sqlite3.
DATABASE_USER = 'lizzie' # Not used with sqlite3.
DATABASE_PASSWORD = '****' # Not used with sqlite3.
DATABASE_HOST = '/tmp/mysql.sock' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '3306'
保存后可以在python shell中测试是否连接正确
python manage.py shell
>>> cursor = connection.cursor()
这步没有错误的话就表示连接正确了
然后创建你的models,完成之后执行以下命令
python manage.py validate #检查modes语法逻辑是否正确
python manage.py sqlall blog #blog为工程名,执行这步产生creattable的sql语句,但没有真正的在数据库中创建表
python manage.py syncdb #初始化数据库,真正创建表
ok,没什么错误就可以runserver了
另外:若修改了表结构就是models中的内容,需python manage.py sqlreset blog 或者 python manage.py reset blog