welcome: please sign in

Diff for "MemberManual/Databases"

Differences between revisions 9 and 45 (spanning 36 versions)
Revision 9 as of 2007-10-27 17:01:52
Size: 3186
Editor: AdamChlipala
Comment: Typo
Revision 45 as of 2015-03-20 06:28:17
Size: 7233
Editor: ClintonEbadi
Comment: what is a mire
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
Line 5: Line 4:
[[TableOfContents]] <<TableOfContents>>

= Introduction =
We use a custom tool called {{{dbtool}}} to handle many of the aspects of creating and deleting databases for MySQL and PostgreSQL.
Line 8: Line 10:
Creating a MySQL user account is an easy task with {{{dbtool}}}. It is available for use when you login to mire.hcoop.net.
Line 10: Line 11:
Run the following command: {{{dbtool mysql adduser}}}. You will be asked for a password. The user created will be the same as your log-in username. We are running Mysql 5.5.
Line 12: Line 13:
== Creating and Deleting Databases ==
{{{dbtool}}} is also used to create new MySQL databases. Replace DATABASE with your desired database name: {{{dbtool mysql createdb DATABASE}}}. The database created will be USER_DATABASE (where USER is your username and DATABASE is the name you provided {{{dbtool}}}).
== Create an Account ==
Creating a MySQL user account is an easy task with {{{dbtool}}}. It is available for use when you log in to `ssh.hcoop.net`.
Line 15: Line 16:
Delete a database with the following: {{{dbtool mysql dropdb DATABASE}}}. Run the following command:

{{{
dbtool mysql adduser
}}}
You will be asked for a password. The user created will be the same as your log-in username.

== Create a Database ==
{{{dbtool}}} is also used to create new MySQL databases. Replace DATABASE with your desired database name:

{{{
dbtool mysql createdb DATABASE
}}}
The database created will be USER_DATABASE (where USER is your username and DATABASE is the name you provided {{{dbtool}}}).

== Delete a Database ==
Delete a database with the following:

{{{
dbtool mysql dropdb DATABASE
}}}
For technical reasons, you cannot drop a database using the {{{mysql}}} shell (using "DROP DATABASE...").

== Delete a Table ==
For technical reasons, users at first do not have the privilege to drop their tables. You need to create database tables and then run '''mysql-fixperms'''. Upon command completion, you will have the privilege to drop all tables that existed at the time of running the command.

If you are trying to import a database structure into MySQL and your script does an unconditional "drop and re-create" on database tables, the process will of course fail on first attempt. The way to go about it is to either remove unconditional DROP statements from your SQL script, or to create same-named empty tables ("CREATE TABLE ''NAME'' (a INT)") and run '''mysql-fixperms'''.
Line 18: Line 45:
If you need to change your MySQL password for security purposes or you have forgotten it, you may do so with this command: {{{dbtool mysql passwd}}}. You will be prompted to input a new password. If you need to change your MySQL password for security purposes or you have forgotten it, you may do so with this command:

{{{
dbtool mysql passwd
}}}
You will be prompted to input a new password.
Line 23: Line 55:
In addition, you can easily use the {{{mysql}}} shell to manipulate or analyze your databases: {{{ mysql -p -h mysql USER_DATABASE }}}. For security reasons, you cannot drop a database using the {{{mysql}}} shell. In addition, you can easily use the {{{mysql}}} shell to manipulate or analyze your databases:
Line 25: Line 57:
To learn more about the MySQL shell, review the [http://dev.mysql.com/doc/refman/5.0/en/ MySQL manual]. {{{
mysql -p -h mysql USER_DATABASE
}}}
To learn more about the MySQL shell, review the [[http://dev.mysql.com/doc/refman/5.5/en/|MySQL manual]].
Line 27: Line 62:
There is a web interface available for managing your databases at https://phpmyadmin.hcoop.net/. Use your database password when logging into it.
Line 28: Line 64:
== Transferring Databases ==
If you have a MySQL database on another system and you wish to put that database onto our systems, you'll have to create the database o as stated above and do the following.

On the system with the original database (remember to replace USER with your username and DATABASE with the name of your database):

The "-h" option is for the hostname, which is "mysql" in our case. (The full hostname is `mysql.hcoop.net`.)
{{{
mysqldump --skip-add-drop-table -p USER_DATABASE -h mysql> mydatabase.sql
scp ./mydatabase.sql USER@ssh.hcoop.net:~/
}}}
`--skip-add-drop-table` is important since by default no tables are granted the `DROP` command.

Finally, import the database on the shell server:

{{{
mysql -h mysql -p USER_DATABASE < ~/mydatabase.sql
}}}
Now that your database has tables, you may grant `DROP` permissions to them using `mysql-fixperms` without any arguments. Now you will be able to `DROP` tables when needed. If for some reason you have a MySQL dump that includes the `DROP` command, then you may run this script on your dumpfile to remove them:

{{{
sed 's/DROP TABLE/-- DROP TABLE/g' ~/mydatabase.sql > ~/mydatabase_nodrop.sql
}}}
(Assuming, of course, that you don't have any jerk users in your database named "[[http://xkcd.com/327/|Robert'); DROP TABLE Students;--]]".)

Then import the dumpfile as written above.

== Resetting Permissions ==
Sometimes we change our policy on which permissions users are granted on their databases. If your database has different permissions set than our current defaults, you can run this command line to update the permissions:

{{{
dbtool mysql grant DATABASE
}}}
Line 29: Line 97:
To create a PostgreSQL user account, enter the following command on mire.hcoop.net: {{{dbtool postgres adduser}}}. You will not be prompted for a password since PostgreSQL utilizes a security model that is quite different from MySQL. The user created will be the same as your log-in username.
Line 31: Line 98:
== Creating and Deleting Databases ==
Additionally, {{{dbtool}}} is used to create new Postgres databases. Replace DATABASE with your desired database name: {{{dbtool postgres createdb DATABASE}}}. The database created will be called USER_DATABASE (where USER is your username and DATABASE is the name you provided {{{dbtool}}}).
The following instructions are for PostgreSQL 9.1, supported by
navajos and bog. If you are using our shell server and want to access your PostgreSQL 8.1 database, simply use database `postgres` instead of `postgres-9.1`. An artifact of supporting 8.1 and 9.1 simultaneously is that 9.1 is running on port 5433 instead of 5432. You will need to supply the port when connecting to the database.
Line 34: Line 101:
Delete a database with the following command: {{{dbtool postgres dropdb DATABASE}}}. For security reasons, you cannot drop a database using the {{{psql}}} shell. == Create an Account ==
To create a PostgreSQL user account, enter the following command on bog.hcoop.net:

{{{
dbtool postgres-9.1 adduser
}}}
You will not be prompted for a password since PostgreSQL utilizes a security model that is quite different from MySQL. The user created will be the same as your log-in username.

== Create a Database ==
Additionally, {{{dbtool}}} is used to create new Postgres databases. Replace DATABASE with your desired database name:

{{{
dbtool postgres-9.1 createdb DATABASE
}}}
The database created will be called USER_DATABASE (where USER is your username and DATABASE is the name you provided {{{dbtool}}}).

If you would like to specify an alternate text encoding for your database (e.g., UTF8), you can run `dbtool` like this:
{{{
dbtool postgres-9.1 createdb DATABASE UTF8
}}}

== Delete a Database ==
Delete a database with the following command:

{{{
dbtool postgres-9.1 dropdb DATABASE
}}}
For security reasons, you cannot drop a database using the {{{psql}}} shell.
Line 37: Line 131:
For web applications, set the PostgreSQL host/server to {{{postgres}}}. Default ports apply. Use your HCoop username. A password is not required. Remember that your database is really named USER_DATABASE, where DATABASE is the name you originally gave {{{dbtool}}}. Follow your software package's instructions. For web applications, set the PostgreSQL host/server to {{{postgres}}}. Currently version 8.1 is running on port 5432 and version 9.1 is running on port 5433. Use your HCoop username. A password is not required. Remember that your database is really named USER_DATABASE, where DATABASE is the name you originally gave {{{dbtool}}}. Follow your software package's instructions.
Line 39: Line 133:
It is very easy to access your database using a PostgreSQL shell:  {{{psql -h postgres USER_DATABASE}}}. It is very easy to access your database using a PostgreSQL shell:
Line 41: Line 135:
To learn more about the {{{psql}}} shell, take a look at the [http://www.postgresql.org/docs/8.1/interactive/index.html PostgreSQL manual]. {{{
psql -h postgres -p PORT USER_DATABASE
}}}
To learn more about the {{{psql}}} shell, take a look at the [[http://www.postgresql.org/docs/9.1/interactive/index.html|PostgreSQL manual]].

== Transferring Databases ==
If you're using PostgreSQL, then you probably already know how to do this. Let us know if that's not the case and you need instructions.

= Database quotas =

We currently are not enforcing any quotas on database volumes because the amount of data stored is so small, and we've never had issues with users filling up file systems. This may change in the future, but would be like all other quota requests, only used to prevent accidental overcommitting of storage.
----
CategoryMemberManual

This is the chapter of the MemberManual that describes how to use PostgreSQL and MySQL databases on HCoop servers.

Introduction

We use a custom tool called dbtool to handle many of the aspects of creating and deleting databases for MySQL and PostgreSQL.

MySQL

We are running Mysql 5.5.

Create an Account

Creating a MySQL user account is an easy task with dbtool. It is available for use when you log in to ssh.hcoop.net.

Run the following command:

dbtool mysql adduser

You will be asked for a password. The user created will be the same as your log-in username.

Create a Database

dbtool is also used to create new MySQL databases. Replace DATABASE with your desired database name:

dbtool mysql createdb DATABASE

The database created will be USER_DATABASE (where USER is your username and DATABASE is the name you provided dbtool).

Delete a Database

Delete a database with the following:

dbtool mysql dropdb DATABASE

For technical reasons, you cannot drop a database using the mysql shell (using "DROP DATABASE...").

Delete a Table

For technical reasons, users at first do not have the privilege to drop their tables. You need to create database tables and then run mysql-fixperms. Upon command completion, you will have the privilege to drop all tables that existed at the time of running the command.

If you are trying to import a database structure into MySQL and your script does an unconditional "drop and re-create" on database tables, the process will of course fail on first attempt. The way to go about it is to either remove unconditional DROP statements from your SQL script, or to create same-named empty tables ("CREATE TABLE NAME (a INT)") and run mysql-fixperms.

Changing Your Password

If you need to change your MySQL password for security purposes or you have forgotten it, you may do so with this command:

dbtool mysql passwd

You will be prompted to input a new password.

Accessing Databases

For web applications, set the MySQL host/server to mysql. Default ports apply. Use your HCoop username. Your password will be required. Please safeguard it. Remember that your database is really named USER_DATABASE, where DATABASE is the name you originally gave dbtool. Follow your software package's instructions.

In addition, you can easily use the mysql shell to manipulate or analyze your databases:

mysql -p -h mysql USER_DATABASE

To learn more about the MySQL shell, review the MySQL manual.

There is a web interface available for managing your databases at https://phpmyadmin.hcoop.net/. Use your database password when logging into it.

Transferring Databases

If you have a MySQL database on another system and you wish to put that database onto our systems, you'll have to create the database o as stated above and do the following.

On the system with the original database (remember to replace USER with your username and DATABASE with the name of your database):

The "-h" option is for the hostname, which is "mysql" in our case. (The full hostname is mysql.hcoop.net.)

mysqldump --skip-add-drop-table -p USER_DATABASE -h mysql> mydatabase.sql
scp ./mydatabase.sql USER@ssh.hcoop.net:~/

--skip-add-drop-table is important since by default no tables are granted the DROP command.

Finally, import the database on the shell server:

mysql -h mysql -p USER_DATABASE < ~/mydatabase.sql

Now that your database has tables, you may grant DROP permissions to them using mysql-fixperms without any arguments. Now you will be able to DROP tables when needed. If for some reason you have a MySQL dump that includes the DROP command, then you may run this script on your dumpfile to remove them:

sed 's/DROP TABLE/-- DROP TABLE/g' ~/mydatabase.sql > ~/mydatabase_nodrop.sql

(Assuming, of course, that you don't have any jerk users in your database named "Robert'); DROP TABLE Students;--".)

Then import the dumpfile as written above.

Resetting Permissions

Sometimes we change our policy on which permissions users are granted on their databases. If your database has different permissions set than our current defaults, you can run this command line to update the permissions:

dbtool mysql grant DATABASE

PostgreSQL

The following instructions are for PostgreSQL 9.1, supported by navajos and bog. If you are using our shell server and want to access your PostgreSQL 8.1 database, simply use database postgres instead of postgres-9.1. An artifact of supporting 8.1 and 9.1 simultaneously is that 9.1 is running on port 5433 instead of 5432. You will need to supply the port when connecting to the database.

Create an Account

To create a PostgreSQL user account, enter the following command on bog.hcoop.net:

dbtool postgres-9.1 adduser

You will not be prompted for a password since PostgreSQL utilizes a security model that is quite different from MySQL. The user created will be the same as your log-in username.

Create a Database

Additionally, dbtool is used to create new Postgres databases. Replace DATABASE with your desired database name:

dbtool postgres-9.1 createdb DATABASE

The database created will be called USER_DATABASE (where USER is your username and DATABASE is the name you provided dbtool).

If you would like to specify an alternate text encoding for your database (e.g., UTF8), you can run dbtool like this:

dbtool postgres-9.1 createdb DATABASE UTF8

Delete a Database

Delete a database with the following command:

dbtool postgres-9.1 dropdb DATABASE

For security reasons, you cannot drop a database using the psql shell.

Accessing Databases

For web applications, set the PostgreSQL host/server to postgres. Currently version 8.1 is running on port 5432 and version 9.1 is running on port 5433. Use your HCoop username. A password is not required. Remember that your database is really named USER_DATABASE, where DATABASE is the name you originally gave dbtool. Follow your software package's instructions.

It is very easy to access your database using a PostgreSQL shell:

psql -h postgres -p PORT USER_DATABASE

To learn more about the psql shell, take a look at the PostgreSQL manual.

Transferring Databases

If you're using PostgreSQL, then you probably already know how to do this. Let us know if that's not the case and you need instructions.

Database quotas

We currently are not enforcing any quotas on database volumes because the amount of data stored is so small, and we've never had issues with users filling up file systems. This may change in the future, but would be like all other quota requests, only used to prevent accidental overcommitting of storage.


CategoryMemberManual

MemberManual/Databases (last edited 2021-11-06 19:46:06 by ClintonEbadi)