| 1 | * MYSQL WON'T START OR STOP?: |
|---|
| 2 | ============================= |
|---|
| 3 | You may never ever delete the special mysql user "debian-sys-maint". This |
|---|
| 4 | user together with the credentials in /etc/mysql/debian.cnf are used by the |
|---|
| 5 | init scripts to stop the server as they would require knowledge of the mysql |
|---|
| 6 | root users password else. |
|---|
| 7 | So in most of the times you can fix the situation by making sure that the |
|---|
| 8 | debian.cnf file contains the right password, e.g. by setting a new one |
|---|
| 9 | (remember to do a "flush privileges" then). |
|---|
| 10 | |
|---|
| 11 | * WHAT TO DO AFTER UPGRADES: |
|---|
| 12 | ============================ |
|---|
| 13 | The privilege tables are automatically updated so all there is left is read |
|---|
| 14 | the changelogs on dev.mysql.com to see if any changes affect custom apps. |
|---|
| 15 | |
|---|
| 16 | * WHAT TO DO AFTER INSTALLATION: |
|---|
| 17 | ================================ |
|---|
| 18 | The MySQL manual describes certain steps to do at this stage in a separate |
|---|
| 19 | chapter. They are not necessary as the Debian packages does them |
|---|
| 20 | automatically. |
|---|
| 21 | |
|---|
| 22 | The only thing that is left over for the admin is |
|---|
| 23 | - setting the passwords |
|---|
| 24 | - creating new users and databases |
|---|
| 25 | - read the rest of this text |
|---|
| 26 | |
|---|
| 27 | * DOWNGRADING TO 4.0 or 4.1: |
|---|
| 28 | ============================ |
|---|
| 29 | Unsupported. Period. |
|---|
| 30 | But if you do and get problems or make interesting experiences, mail me, it |
|---|
| 31 | might help others. |
|---|
| 32 | Ok, if you really want, I would recommend to "mysqldump --opt" all tables, |
|---|
| 33 | then purge 4.1, delete /var/lib/mysql, install 4.0 and insert the dumps. Be |
|---|
| 34 | carefully, though, with the "mysql" table, you might not simply overwrite that |
|---|
| 35 | one as the password for the mysql "debian-sys-maint" user is stored in |
|---|
| 36 | /etc/mysql/debian.cnf and needed by /etc/init.d/ to start mysql and check if |
|---|
| 37 | it's alive. |
|---|
| 38 | |
|---|
| 39 | * SOME APPLICATION CAN NO LONGER CONNECT: |
|---|
| 40 | ========================================= |
|---|
| 41 | This application is probably linked against libmysqlclient12 or below and |
|---|
| 42 | somebody has created a mysql user with new-style passwords. |
|---|
| 43 | The old_passwords=1 option in /etc/mysql/my.cnf might help. If not the |
|---|
| 44 | application that inserted the user has to be changed or the application that |
|---|
| 45 | tries to connect updated to libmysqlclient14 or -15. |
|---|
| 46 | |
|---|
| 47 | * NETWORKING: |
|---|
| 48 | ============= |
|---|
| 49 | For security reasons, the Debian package has enabled networking only on the |
|---|
| 50 | loop-back device using "bind-address" in /etc/mysql/my.cnf. Check with |
|---|
| 51 | "netstat -tlnp" where it is listening. If your connection is aborted |
|---|
| 52 | immediately see if "mysqld: all" or similar is in /etc/hosts.allow and read |
|---|
| 53 | hosts_access(5). |
|---|
| 54 | |
|---|
| 55 | * WHERE IS THE DOCUMENTATION?: |
|---|
| 56 | ============================== |
|---|
| 57 | Unfortunately due to licensing restrictions, debian currently not able |
|---|
| 58 | to provide the mysql-doc package in any format. For the most up to date |
|---|
| 59 | documentation, please go to http://dev.mysql.com/doc. |
|---|
| 60 | |
|---|
| 61 | * PASSWORDS: |
|---|
| 62 | ============ |
|---|
| 63 | It is strongly recommended to set a password for the mysql root user (which |
|---|
| 64 | /usr/bin/mysql -u root -D mysql -e "update user set password=password('new-password') where user='root'" |
|---|
| 65 | /usr/bin/mysql -u root -e "flush privileges" |
|---|
| 66 | If you already had a password set add "-p" before "-u" to the lines above. |
|---|
| 67 | |
|---|
| 68 | |
|---|
| 69 | If you are tired to type the password in every time or want to automate your |
|---|
| 70 | scripts you can store it in the file $HOME/.my.cnf. It should be chmod 0600 |
|---|
| 71 | (-rw------- username username .my.cnf) to ensure that nobody else can read |
|---|
| 72 | it. Every other configuration parameter can be stored there, too. You will |
|---|
| 73 | find an example below and more information in the MySQL manual in |
|---|
| 74 | /usr/share/doc/mysql-doc or www.mysql.com. |
|---|
| 75 | |
|---|
| 76 | ATTENTION: It is necessary, that a .my.cnf from root always contains a "user" |
|---|
| 77 | line wherever there is a "password" line, else, the Debian maintenance |
|---|
| 78 | scripts, that use /etc/mysql/debian.cnf, will use the username |
|---|
| 79 | "debian-sys-maint" but the password that is in root's .my.cnf. Also note, |
|---|
| 80 | that every change you make in the /root/.my.cnf will affect the mysql cron |
|---|
| 81 | script, too. |
|---|
| 82 | |
|---|
| 83 | # an example of $HOME/.my.cnf |
|---|
| 84 | [client] |
|---|
| 85 | user = your-mysql-username |
|---|
| 86 | password = enter-your-good-new-password-here |
|---|
| 87 | |
|---|
| 88 | * BIG_ROWS FOR EVEN MORE ROWS IN A TABLE: |
|---|
| 89 | ========================================= |
|---|
| 90 | If you ever run out of rows in a table there is the possibility of building |
|---|
| 91 | the package with "-DBIG_ROWS" which, according to a MySQL employee on |
|---|
| 92 | packagers@lists.mysql.com should lead to a 64bit row index (I guess > 2^32 |
|---|
| 93 | rows) but also to an approx. 5% performance loss. |
|---|
| 94 | |
|---|
| 95 | * BerkeleyDB Storage Engine |
|---|
| 96 | =========================== |
|---|
| 97 | Support for BerkeleyDB has been removed in 5.1, and consequently both the |
|---|
| 98 | have-bdb and skip-bdb configuration options will cause the server to fail. |
|---|
| 99 | Removing the options from /etc/mysql/my.cnf will fix this problem. |
|---|
| 100 | |
|---|
| 101 | * FURTHER NOTES ON REPLICATION |
|---|
| 102 | =============================== |
|---|
| 103 | If the MySQL server is acting as a replication slave, you should not |
|---|
| 104 | set --tmpdir to point to a directory on a memory-based filesystem or to |
|---|
| 105 | a directory that is cleared when the server host restarts. A replication |
|---|
| 106 | slave needs some of its temporary files to survive a machine restart so |
|---|
| 107 | that it can replicate temporary tables or LOAD DATA INFILE operations. If |
|---|
| 108 | files in the temporary file directory are lost when the server restarts, |
|---|
| 109 | replication fails. |
|---|