Monday, October 9, 2017

Fresh Installation of MySQL on Debian (including Ubuntu)

Note
The following instructions assume that no versions of MySQL (whether distributed by Oracle or other parties) have already been installed on your system; if that is not the case, follow the instructions given in Replacing a Native Distribution of MySQL Using the MySQL APT Repository or Replacing a MySQL Server Installed by a Direct deb Package Download instead.
  1. Adding the MySQL APT Repository

    First, add the MySQL APT repository to your system's software repository list. Follow these steps:
    1. Go to the download page for the MySQL APT repository at http://dev.mysql.com/downloads/repo/apt/.
    2. Select and download the release package for your Linux distribution.
    3. Install the downloaded release package with the following command, replacing version-specific-package-name with the name of the downloaded package (preceded by its path, if you are not running the command inside the folder where the package is):
      shell> sudo dpkg -i /PATH/version-specific-package-name.deb

For example, for version w.x.y-z of the package, the command is:
shell> sudo dpkg -i mysql-apt-config_w.x.y-z_all.deb
  • Note that the same package works on all supported Debian and Ubuntu platforms.
  • During the installation of the package, you will be asked to choose the versions of the MySQL server and other components (for example, the MySQL Workbench) that you want to install. If you are not sure which version to choose, do not change the default options selected for you. You can also choose none if you do not want a particular component to be installed. After making the choices for all components, choose Ok to finish the configuration and installation of the release package.
    You can always change your choices for the versions later; see Selecting a Major Release Version for instructions.
  • Update package information from the MySQL APT repository with the following command (this step is mandatory):
    shell> sudo apt-get update

  • Instead of using the release package, you can also add and configure the MySQL APT repository manually; see Appendix A: Adding and Configuring the MySQL APT Repository Manually for details.
    Note
    Once the MySQL APT repository is enabled on your system, you will no longer be able to install any MySQL packages from your platform's native software repositories until the MySQL APT repository is disabled.
  • Installing MySQL with APT

    Install MySQL by the following command:
    shell> sudo apt-get install mysql-server
  • This installs the package for the MySQL server, as well as the packages for the client and for the database common files.
    During the installation, there are two requests by the dialogue boxes:
    • Supply a password for the root user for your MySQL installation.
      Important
      Make sure you remember the root password you set. Users who want to set a password later can leave the password field blank in the dialogue box and just press Ok; in that case, root access to the server will be authenticated by Socket Peer-Credential Pluggable Authentication for connections using a Unix socket file. You can set the root password later using the program mysql_secure_installation.
    • Indicate if you want to install the test database with Yes or No. Installation of the test database is not recommended for production environments.
  • Starting and Stopping the MySQL Server

    The MySQL server is started automatically after installation. You can check the status of the MySQL server with the following command:
    shell> sudo service mysql status

  • Stop the MySQL server with the following command:
    shell> sudo service mysql stop

    To restart the MySQL server, use the following command:
    shell> sudo service mysql start
    Note
    A few third-party native repository packages that have dependencies on the native MySQL packages may not work with the MySQL APT repository packages and should not be used together with them; these include akonadi-backend-mysql, handlersocket-mysql-5.5, and zoneminder.

    Wednesday, October 4, 2017

    Restart, Start, Stop MySQL from the Command Line macOS, OSX, Linux

    To restart, start or stop MySQL server from the command line, type the following at the shell prompt…

    On Linux start/stop/restart from the command line:

     /etc/init.d/mysqld start
     /etc/init.d/mysqld stop
     /etc/init.d/mysqld restart
    Some Linux flavours offer the service command too
     service mysqld start
     service mysqld stop
     service mysqld restart
    or
     service mysql start
     service mysql stop
     service mysql restart

    On macOS Sierra & OS to start/stop/restart MySQL post 5.7  from the command line:

    sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
    sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

    On OS X to start/stop/restart MySQL pre 5.7  from the command line:

     sudo /usr/local/mysql/support-files/mysql.server start
     sudo /usr/local/mysql/support-files/mysql.server stop
     sudo /usr/local/mysql/support-files/mysql.server restart
    
    

    Monday, October 2, 2017

    Install MySQL on Ubuntu 14.04

    MySQL is a popular database management system used for web and server applications. This guide will introduce how to install, configure and manage MySQL on a Linode running Ubuntu 14.04 LTS (Trusty Tahr).
    We recommend using a high memory Linode with this guide.
    This guide is written for a non-root user. Commands that require elevated privileges are prefixed with sudo. If you’re not familiar with the sudo command, you can check our Users and Groups guide.

    Before You Begin

    1. Ensure that you have followed the Getting Started and Securing Your Server guides, and the Linode’s hostname is set.
      To check your hostname run:
      1
      2
      hostname
      hostname -f
      
      The first command should show your short hostname, and the second should show your fully qualified domain name (FQDN).
    2. Update your system:
      1
      2
      sudo apt-get update
      sudo apt-get upgrade
      

    Install MySQL

    1
    sudo apt-get install mysql-server
    
    During the installation process, you will be prompted to set a password for the MySQL root user as shown below. Choose a strong password and keep it in a safe place for future reference.
    Setting the MySQL root password in Ubuntu 14.04 LTS (Trusty Tahr).
    MySQL will bind to localhost (127.0.0.1) by default. Please reference our MySQL remote access guide for information on connecting to your databases using SSH.
    Allowing unrestricted access to MySQL on a public IP is not advised, but you may change the address it listens on by modifying the bind-address parameter in /etc/my.cnf. If you decide to bind MySQL to your public IP, you should implement firewall rules that only allow connections from specific IP addresses.

    Harden MySQL Server

    Run the mysql_secure_installation script to address several security concerns in a default MySQL installation:
    1
    sudo mysql_secure_installation
    
    You will be given the choice to change the MySQL root password, remove anonymous user accounts, disable root logins outside of localhost, and remove test databases. It is recommended that you answer yes to these options. You can read more about the script in the MySQL Reference Manual.

    Use MySQL

    The standard tool for interacting with MySQL is the mysql client, which installs with the mysql-server package. The MySQL client is accessed through a terminal.

    Root Login

    1. To log in to MySQL as the root user:
      1
      mysql -u root -p
      
    2. When prompted, enter the root password you assigned when the mysql_secure_installation script was run.
      You’ll then be presented with the MySQL monitor prompt:
      1
      2
      3
      4
      5
      6
      7
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 1
      Server version: 5.0.45 Source distribution
      
      Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
      
      mysql>
      
    3. To generate a list of commands for the MySQL prompt, enter \h. You’ll then see:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      List of all MySQL commands:
      Note that all text commands must be first on line and end with ';'
      ?         (\?) Synonym for `help'.
      clear     (\c) Clear command.
      connect   (\r) Reconnect to the server. Optional arguments are db and host.
      delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter.
      edit      (\e) Edit command with $EDITOR.
      ego       (\G) Send command to mysql server, display result vertically.
      exit      (\q) Exit mysql. Same as quit.
      go        (\g) Send command to mysql server.
      help      (\h) Display this help.
      nopager   (\n) Disable pager, print to stdout.
      notee     (\t) Don't write into outfile.
      pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
      print     (\p) Print current command.
      prompt    (\R) Change your mysql prompt.
      quit      (\q) Quit mysql.
      rehash    (\#) Rebuild completion hash.
      source    (\.) Execute an SQL script file. Takes a file name as an argument.
      status    (\s) Get status information from the server.
      system    (\!) Execute a system shell command.
      tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
      use       (\u) Use another database. Takes database name as argument.
      charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
      warnings  (\W) Show warnings after every statement.
      nowarning (\w) Don't show warnings after every statement.
      
      For server side help, type 'help contents'
      
      mysql>
      

    Create a New MySQL User and Database

    1. In the example below, testdb is the name of the database, testuser is the user, and password is the user’s password.
      1
      2
      3
      create database testdb;
      create user 'testuser'@'localhost' identified by 'password';
      grant all on testdb.* to 'testuser';
      
      You can shorten this process by creating the user while assigning database permissions:
      1
      2
      create database testdb;
      grant all on testdb.* to 'testuser' identified by 'password';
      
    2. Exit MySQL.
      1
      exit
      

    Create a Sample Table

    1. Log back in as testuser.
      1
      mysql -u testuser -p
      
    2. Create a sample table called customers. This creates a table with a customer ID field of the type INT for integer (auto-incremented for new records, used as the primary key), as well as two fields for storing the customer’s name.
      1
      2
      use testdb;
      create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
      
    3. Then exit MySQL.
      1
      exit
      

    Reset the MySQL Root Password

    If you forget your MySQL root password, it can be reset.
    1. Stop the current MySQL server instance:
      1
      sudo service mysql stop
      
    2. Use dpkg to re-run the configuration process that MySQL goes through on first installation. You will again be asked to set a root password.
      1
      sudo dpkg-reconfigure mysql-server-5.5
      
    3. Then start MySQL:
      1
      sudo service mysql start
      
    You’ll now be able to log in again using mysql -u root -p.

    Tune MySQL

    MySQL Tuner is a Perl script that connects to a running instance of MySQL and provides configuration recommendations based on workload. Ideally, the MySQL instance should have been operating for at least 24 hours before running the tuner. The longer the instance has been running, the better advice MySQL Tuner will give.
    1. Install MySQL Tuner from Ubuntu’s repositories:
      1
      sudo apt-get install mysqltuner
      
    2. To run it:
      1
      mysqltuner
      
      You will be asked for the MySQL root user’s name and password. The output will show two areas of interest: General recommendations and Variables to adjust.
    MySQL Tuner is an excellent starting point to optimize a MySQL server, but it would be prudent to perform additional research for configurations tailored to the application(s) utilizing MySQL on your Linode.