[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Install MySQL On Slackware

Installing MySQL

Install MySQL from the official Slackware discs or using slackpkg. If you performed a full install of Slackware, then you already have MySQL on your computer.

Configuring MySQL

  1. Create the needed database(s) and set their permissions properly
    As root, run:
    root@darkstar# mysql_install_db --user=mysql

    The user specified by –user will own the database files, so it's important to set the right user here, otherwise MySQL won't be able to write to your databases. By default MySQL in Slackware runs as user “mysql”, so that is the safe choice.

  2. Enable execution of the rc script to start MySQL automatically on boot
    This is optional.
    root@darkstar# chmod 755 /etc/rc.d/rc.mysqld
  3. Enable networking if needed
    Networking is disabled by default to improve security. If you want to allow network connections, comment out this line in /etc/rc.d/rc.mysqld:
    rc.mysqld
    #SKIP="--skip-networking"
  4. Start mysqld
    root@darkstar# /etc/rc.d/rc.mysqld start

    and proceed to the next section “Securing MySQL”.

Securing MySQL

You have a choice : Manual or Automatic configuration of secure access

Automatic configuration of secure access

  1. Run the following command, and answer the questions
    root@darkstar# /usr/bin/mysql_secure_installation

    The initial root password is “” (the empty string), so just hit ENTER when the above command asks for the password

Manual configuration of secure access

  1. Set a password for MySQL's root account
    root@darkstar# mysqladmin -u root password 'new-password-here'

    If you enabled networking, you should also run this command:

    root@darkstar# mysqladmin -u root -h 'your-hostname' password 'new-password'
Check the mysql_install_db results, these commands are printed, you can copy/paste them. The hostname will already be replaced by yours.

Connecting to your MySQL server

  1. Connect to your MySQL server using the following command
    user@darkstar$ mysql -u root -p
  2. For security reasons you should delete the anonymous user
    • For the localhost server:
      mysql> use mysql
      mysql> SELECT user, host FROM user;
      mysql> DELETE FROM user WHERE host='localhost' AND user='';
    • If you enabled networking, you should run this command instead:
      mysql> use mysql
      mysql> SELECT user, host FROM user;
      mysql> DELETE FROM user WHERE user='';

Adding Unicode support

  1. Change directory to the /etc/ directory, and select the configuration which you prefer. For a “simple” database service without heavy MySQL load, it is recommended to use “my-large.cnf” if you have 2 GB of RAM or more. Copy the configuration file you chose and name the copy /etc/my.cnf.
  2. Edit /etc/my.cnf adding these lines in the section “[mysqld]”:
    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8

    This gives you full UTF8 support in your MySQL server, after you restarted it.

More on Unicode / UTF8 character set support is described here: http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf8-in-my-cnf

Troubleshooting

  • Server start errors can be seen in the error log that is located by default at /var/lib/mysql/<hostname>.err. Another option is to run the server directly and direct the output to the console (use Ctrl+\ to stop the server). Run:
    root@darkstar# /usr/bin/mysqld_safe --console
  • Resetting the root password can be done by creating a new cnf file and add the following lines (please change the password in this example):
    mysql_new.cnf
    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE USER='root';
    FLUSH PRIVILEGES;

    Save this file (any name would do) and start the server with the –init-file argument:

    root@darkstar# /usr/bin/mysqld_safe --defaults-file="new_cnf_file.cnf"

Sources

 howtos:databases:install_mysql_on_slackware ()