.. _create-database: ========================== Create database for Askbot ========================== Askbot has been successfully tested with `MySQL` and `PostgreSQL` databases. PostgreSQL ---------- PostgreSQL is the preferred database for Askbot - because it offers great full text search functionality and supports transactions at the same time. To use postgresql - install it (please see documentation elsewhere). After you have the database inself, add python bindingngs to postgresql:: pip install psycopg2 To create a database, log in to postgresql as user postgres, create a user (if necessary), create a database, and enable the user account to log in to the database:: create role someuser with createdb login encrypted password `somepassword`; create database somedb with owner=someuser; Then edit file ``pg_hba.conf`` within your database installation and add a line as the first non-comment line or near, to make sure that this rule takes precedence:: local somedb someuser md5 Then restart the database server (probably as root user), the command may be:: /etc/init.d/postgresql restart MySQL ----- This section assumes that MySQL is installed and is up and running. Once you have the database installed (please see manual elsewhere), add python bindings for mysql:: pip install mysql-python Database can be prepared via your hosting control panel, if available, or can be created manually as shown below (using a high privilege MySQL account): Log in to mysql:: mysql -u username -p Then type these two commands (note that fake `dbname`, `dbuser`, and `dbpassword` are used in this example):: create database askbot DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci; grant all privileges on dbname.* to dbuser@localhost identified by 'dbpassword'; Again, please remember to create real usernname, database name and password and write them down. These credentials will go into the file `settings.py`_ - the main configuration file of the Django application. .. note:: Notation `dbuser@hostname` is important for security - normally you want to restrict access to the database to certain hosts only. `localhost` entry ensures that database cannot be accessed from remote hosts at all. .. _Python: http://www.python.org/download/ .. _MySQL: http://www.mysql.com/downloads/mysql/#downloads .. _settings.py: http://github.com/ASKBOT/askbot-devel/blob/master/askbot/setup_templates/settings.py