How to Install MariaDB 10.4 on Ubuntu 18.04, Ubuntu 20.04
This tutorial will be showing you how to install MariaDB 10.4 on Ubuntu 18.04 and Ubuntu 20.04 server. MariaDB is a mature, stable, open-source relational database forked from MySQL. Most Linux distributions have replaced MySQL with MariaDB as the default database server. MariaDB powers applications at companies and organizations including Google, Wikipedia, Tencent, Verizon, Deutsche Bank, Huatai Securities and more.
At the time of this writing, the latest stable version is MariaDB 10.4.8, released on September 11, 2019. Notable changes includes:
- The unix_socket authentication plugin is now default on Unix-like platforms.
- mysql.user table is retired. User accounts and global privileges are now stored in the mysql.global_priv table.
- The obsolete mysql.host table is no longer created.
- Galera has been upgraded from Galera 3 to Galera 4.
- And more.
Every major MariaDB release will be maintained at least 5 years. MariaDB 10.4 will be supported until June, 2024.
Install MariaDB 10.4 on Ubuntu 18.04, 20.04 From Official Repository
The default Ubuntu repository includes MariaDB package, but the version is out of date. Ubuntu 18.04 contains only MariaDB 10.1 and Ubuntu 20.04 contains MariaDB 10.3. We can install the latest version from the official MariaDB repository.
Visit https://downloads.mariadb.org/mariadb/repositories and select your Linux distribution, release, version, and the repository mirror that you would like to use. For example, I selected Ubuntu 18.04, MariaDB 10.4 and the Limestone Networks mirror, as shown in the following screenshot.
Once all of the choices have been made, customized instructions will appear at the bottom of the page. As an example, I need to run the following commands to add the repository on Ubuntu 18.04.
sudo apt-get install software-properties-common sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.4/ubuntu bionic main'
To add the repository on Ubuntu 20.04, simply replace bionic
with focal
in the third command.
Then update package index and install MariaDB server.
sudo apt update sudo apt install mariadb-server
The galera-4
package will be installed automatically with the MariaDB server. Once the installation finishes, MariaDB server automatically starts. You can check its status with:
systemctl status mysql
or
systemctl status mariadb
As you can see, it’s active and running.
Hint: Press Q to gain back control of the terminal if the above command doesn’t quit immediately.
If it’s not running, you can manually start it with:
sudo systemctl start mariadb
To enable auto start at boot time, run
sudo systemctl enable mariadb
To log in to MariaDB monitor, run
sudo mysql -u root
or
sudo mariadb -u root
If you are asked to enter a password, you need to enter the password for your user’s sudo password, not the MariaDB root user password.
We can see that the server version is 10.4.8, installed from mariadb.org binary distribution. To log out, run
exit;
Run the Post Installation Script
To secure MariaDB server as much as possible, run the post installation script.
sudo mysql_secure_installation
MariaDB 10.04 uses unix_socket authentication plugin, so the MariaDB root user doesn’t need a password. When the script asks you to enter the password for root, just press Enter. Answer “n” to the next two questions.
Then you can press Enter to answer all remaining questions, which will remove anonymous user, disable remote root login and remove test database. This step is a basic requirement for MariaDB database security. (Notice that Y is capitalized, which means it is the default answer. )
InnoDB vs XtraDB Storage Engine
By default, until MariaDB 10.1, MariaDB uses the XtraDB storage engine, a performance enhanced fork of the InnoDB storage engine from MySQL. However, over time, MySQL has implemented almost all of the improvements. InnoDB has caught up, so from MariaDB 10.2, InnoDB is the default engine.
To check which is the default storage engine, log into MariaDB monitor and run the following command.
show engines;
On MariaDB 10.1, the above command returns the following result, which indicates XtraDB is the default engine.
On MariaDB 10.2, 10.3 and 10.4, the above command returns the following result, which indicates InnoDB is the default engine.
Troubleshooting
Note: This troubleshoot tip no longer applies to MariaDB 10.4, which now uses unix_socket authentication plugin by default. However, you might find it useful if you are still using MariaDB 10.3.
If you previously installed MariaDB from the default Ubuntu repository and now you install the latest MariaDB from mariadb.org, then you will probably encounter the following error when trying to login.
ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded
This is because the MariaDB.org binary still uses the mysql_native_password
plugin to authenticate user login, whereas the MariaDB binary from Ubuntu repository uses the unix_socket
plugin to authenticate user login. The former requires user to enter password, whereas the latter allows user to run the following command to login, without having to provide MariaDB root password.
sudo mysql -u root
Originally MariaDB root user is set to use the unix_socket
to login because it’s installed from Ubuntu repository, but now you install a new binary from mariadb.org, which disables the unix_socket
plugin, so you will see the above error.
If you would like to continue to use the unix_socket
method, then edit the 50-server.cnf
file.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Add the following line in the [mariadb]
unit at the bottom.
plugin_load_add = auth_socket
Save and close the file. Then restart MariaDB server for the change to take effect.
sudo systemctl restart mariadb
If you prefer to use the mysql_native_password
method, please see the following article.
There are two other differences worth mentioning.
- The MariaDB package from Ubuntu repository uses the
/etc/mysql/mariadb.conf.d/50-server.conf
file for server configuration, whereas the MariaDB package from MariaDB.org repository uses the/etc/mysql/my.cnf
file for server configuration on clean install. - The MariaDB package from mariadb.org repository will create a
debian-sys-maint
user in the database, whereas the MariaDB packages from Ubuntu repository won’t create this user. The password for this user is stored in/etc/mysql/debian.cnf
file.
If you see the following error while running the sudo systemctl status mariadb
command.
ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)
You may need to reconfigure the mariadb-server-10.3
package with the following command.
sudo dpkg-reconfigure mariadb-server-10.3
When the reconfigure wizard asks you to enter a new root password, you can just press the Tab key and press Enter, so the root password won’t be changed.
Conclusion
That’s it. I hope this article helped you install the latest version of MariaDB on Ubuntu 18.04 and Ubuntu 18.04. As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care 🙂
Well done!
Agreed!
Thank you! Very helpful setting up MariaDB on my Nginx server!!!
Hello there,
Similarly to this “Install Latest MariaDB Version on Ubuntu 18.04, Ubuntu 19.04” do you have it for “PHP latest version” ?
Kindest Regards,
Alex
You can follow this guide: https://www.linuxbabe.com/ubuntu/php-multiple-versions-ubuntu
Can’t upgrade mariadb-server: