MySQL

From Da Nerd Mage Wiki
Jump to navigation Jump to search
Proven on:
Logo Debian.png
11 (bullseye)

As always...

Start with:

  • sudo apt update
  • sudo apt upgrade

MySQL on Debian

Debian does not have MySQL in its repositories... :(

We can solve this!

Check the MySQL download page for current version...

If you're happy with 8.0.28, go ahead, download & install.

(Do note: apt update may throw errors if you don't use the latest version.)

  • wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
  • sudo apt install ./mysql-apt-config_0.8.22-1_all.deb

It may ask about distro version. On LMDE 4 or SparkyLinux 5, Select "debian buster" (It won't ask on Debian...)

Select "Ok"

Select "Ok"

Select "Ok"

Some versions will also ask about Configuring mysql-community-server

  • Pick a good root password...
  • I tend to select Use Legacy Authentication Method because Use Strong Password Encryption is annoying as hell. (Your choice here...)

Update & Upgrade everything now...

  • sudo apt update
  • sudo apt upgrade

Now you can go ahead & pretend they haven't dropped MySQL from the Debian repos...

  • sudo apt install mysql-server mysql-client

Now Do A Backup!

Configure MySQL

  • sudo mysql_secure_installation
    • Would you like to setup VALIDATE PASSWORD component?
      • I select No (because I'd rather manage my own password policies, thanks...)
    • root password
      • Please set the password for root here.
        • Pick a good root password...
    • or... (depends on install...)
      • Using existing password for root.
        • Say No (Which actually means yes... The question being asked is "Change the password for root?")
    • Remove anonymous users?
      • Duh... Yes
    • Disallow root login remotely?
      • Your choice, but I tend to say No.
    • Remove test database and access to it?
      • Duh... Yes again.
    • Reload privilege tables now?
      • Yes
  • (Extra Instructions if you've never configured MySQL before)

Now Do A Backup!

Set up at least one user in mysql

  • sudo mysql -u root -p
CREATE USER 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;
EXIT;

(Hint: This'd be a good time to create yourself as that user with your non-admin password of choice...)

Now Do A Backup!

Notes about accessing the database remotely

If this is a Database server, you'll be doing the user setup again but replacing localhost with MachineName (where MachineName is the name of any remote machines that need access to your databases).

You'll also need to tell mySQL to bind to the actual network interface (or a wildcard "*").

  • sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

and add in the line:

bind-address  = 000.000.000.000

Where 000.000.000.000 can either be left as is or replaced with the actual IP of the server OR the FQDN of the server.

(replacing the bind-address line that might already be there...)
(TGON needs to remind me to update this page with a thing about setting up user access...)

On the remote machine(s), it'll be handy to install mysql-client (at minimum, for testing...).

On Debian:

  • sudo apt install default-mysql-client

(which gets you the MariaDB version, but it works just fine.

On systems with mySQL in the repositories:

  • sudo apt install mysql-client

Either way, the command to access your database is:

  • mysql -h DatabaseServer -u USERNAME -p