MariaDB package repository setup script<\/a>.<\/p>\n\n\n\nThe script allows you to choose the version of MariaDB you want to set the APT repositories for.<\/p>\n\n\n\n
For example, to install APT repository for MariaDB 11, then execute the command below;<\/p>\n\n\n\n
curl -LsS https:\/\/r.mariadb.com\/downloads\/mariadb_repo_setup | \\\nsudo bash -s -- --mariadb-server-version=\"mariadb-11.0\"<\/code><\/pre>\n\n\n\nSample script output;<\/p>\n\n\n\n
\n# [info] Checking for script prerequisites.\n# [info] MariaDB Server version 11.0 is valid\n# [info] Repository file successfully written to \/etc\/apt\/sources.list.d\/mariadb.list\n# [info] Adding trusted package signing keys...\n# [info] Running apt-get update...\n# [info] Done adding trusted package signing keys\n<\/code><\/pre>\n\n\n\nInstalling MariaDB 11 on Ubuntu 22.04\/Ubuntu 20.04;<\/h4>\n\n\n\n
You should now be able to install MariaDB 11 by running the command below;<\/p>\n\n\n\n
apt install mariadb-server<\/code><\/pre>\n\n\n\nVerify the MariaDB installed version<\/h4>\n\n\n\n
MariaDB 11 deprecates the use of mysql<\/code><\/strong> command line tool and replaces it with mariadb<\/code>.<\/p>\n\n\n\nAs much as you can still be able to use mysql command, you will get some deprecation warnings.<\/p>\n\n\n\n
To check the version of installed MariaDB, run the command below;<\/p>\n\n\n\n
mariadb -V<\/code><\/pre>\n\n\n\nmariadb from 11.0.1-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper<\/code><\/pre>\n\n\n\nRunning MariaDB 11 on Ubuntu 22.04\/Ubuntu 20.04<\/h4>\n\n\n\n
Upon installation, MariaDB is started and enabled to run on system boot;<\/p>\n\n\n\n
systemctl status mariadb<\/code><\/pre>\n\n\n\n\n\u25cf mariadb.service - MariaDB 11.0.1 database server\n Loaded: loaded (\/lib\/systemd\/system\/mariadb.service; enabled; vendor preset: enabled)\n Drop-In: \/etc\/systemd\/system\/mariadb.service.d\n \u2514\u2500migrated-from-my.cnf-settings.conf\n Active: active (running) since Thu 2023-05-04 05:31:30 UTC; 1s ago\n Docs: man:mariadbd(8)\n https:\/\/mariadb.com\/kb\/en\/library\/systemd\/\n Process: 12654 ExecStartPre=\/usr\/bin\/install -m 755 -o mysql -g root -d \/var\/run\/mysqld (code=exited, status=0\/SUCCESS)\n Process: 12664 ExecStartPre=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n Process: 12666 ExecStartPre=\/bin\/sh -c [ ! -e \/usr\/bin\/galera_recovery ] && VAR= || VAR=`cd \/usr\/bin\/..; \/usr\/bin\/galera_recovery`; [ $? -eq 0 ] && systemctl set-e>\n Process: 12715 ExecStartPost=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n Process: 12717 ExecStartPost=\/etc\/mysql\/debian-start (code=exited, status=0\/SUCCESS)\n Main PID: 12701 (mariadbd)\n Status: \"Taking your SQL requests now...\"\n Tasks: 15 (limit: 2281)\n Memory: 79.1M\n CGroup: \/system.slice\/mariadb.service\n \u2514\u250012701 \/usr\/sbin\/mariadbd\n\nMay 04 05:31:29 ubuntu20 mariadbd[12701]: 2023-05-04 5:31:29 0 [Note] Plugin 'wsrep-provider' is disabled.\nMay 04 05:31:29 ubuntu20 mariadbd[12701]: 2023-05-04 5:31:29 0 [Note] InnoDB: Loading buffer pool(s) from \/var\/lib\/mysql\/ib_buffer_pool\nMay 04 05:31:29 ubuntu20 mariadbd[12701]: 2023-05-04 5:31:29 0 [Note] Server socket created on IP: '127.0.0.1'.\nMay 04 05:31:30 ubuntu20 mariadbd[12701]: 2023-05-04 5:31:30 0 [Note] InnoDB: Buffer pool(s) load completed at 230504 5:31:30\nMay 04 05:31:30 ubuntu20 mariadbd[12701]: 2023-05-04 5:31:30 0 [Note] \/usr\/sbin\/mariadbd: ready for connections.\nMay 04 05:31:30 ubuntu20 mariadbd[12701]: Version: '11.0.1-MariaDB-1:11.0.1+maria~ubu2004' socket: '\/run\/mysqld\/mysqld.sock' port: 3306 mariadb.org binary distribution\nMay 04 05:31:30 ubuntu20 systemd[1]: Started MariaDB 11.0.1 database server.\nMay 04 05:31:30 ubuntu20 \/etc\/mysql\/debian-start[12719]: Upgrading MySQL tables if necessary.\nMay 04 05:31:30 ubuntu20 \/etc\/mysql\/debian-start[12730]: Checking for insecure root accounts.\nMay 04 05:31:30 ubuntu20 \/etc\/mysql\/debian-start[12734]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables\n<\/code><\/pre>\n\n\n\nYou can manage the service via systemctl command.<\/p>\n\n\n\n
For example, to start MariaDB service;<\/p>\n\n\n\n
systemctl start mariadb<\/code><\/pre>\n\n\n\nTo restart;<\/p>\n\n\n\n
systemctl restart mariadb<\/code><\/pre>\n\n\n\nTo stop the service;<\/p>\n\n\n\n
systemctl stop mariadb<\/code><\/pre>\n\n\n\nEnable the service from running on system boot;<\/p>\n\n\n\n
systemctl enable mariadb<\/code><\/pre>\n\n\n\nDisable the service from running on system boot;<\/p>\n\n\n\n
systemctl disable mariadb<\/code><\/pre>\n\n\n\nSecuring MariaDB 11<\/h3>\n\n\n\n
MariaDB comes with a default security script, mariadb-secure-installation<\/code><\/strong> that is used to improve the security of MariaDB installation by:<\/p>\n\n\n\n\n- Setting the password for root accounts (if need be).<\/li>\n\n\n\n
- Disabling remote root login to the databases.<\/li>\n\n\n\n
- Removing anonymous-user accounts.<\/li>\n\n\n\n
- Removing the test database, which by default can be accessed by anonymous users.<\/li>\n<\/ul>\n\n\n\n
Simply run the command below to launch the script.<\/p>\n\n\n\n
mariadb-secure-installation<\/code><\/pre>\n\n\n\n\nNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB\n SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!\n\nIn order to log into MariaDB to secure it, we'll need the current\npassword for the root user. If you've just installed MariaDB, and\nhaven't set the root password yet, you should just press enter here.\n\nEnter current password for root (enter for none): \nOK, successfully used password, moving on...\n\nSetting the root password or using the unix_socket ensures that nobody\ncan log into the MariaDB root user without the proper authorisation.\n\nYou already have your root account protected, so you can safely answer 'n'.\n\nSwitch to unix_socket authentication [Y\/n] \nEnabled successfully!\nReloading privilege tables..\n ... Success!\n\n\nYou already have your root account protected, so you can safely answer 'n'.\n\nChange the root password? [Y\/n] y\nNew password: \nRe-enter new password: \nPassword updated successfully!\nReloading privilege tables..\n ... Success!\n\n\nBy default, a MariaDB installation has an anonymous user, allowing anyone\nto log into MariaDB without having to have a user account created for\nthem. This is intended only for testing, and to make the installation\ngo a bit smoother. You should remove them before moving into a\nproduction environment.\n\nRemove anonymous users? [Y\/n] y\n ... Success!\n\nNormally, root should only be allowed to connect from 'localhost'. This\nensures that someone cannot guess at the root password from the network.\n\nDisallow root login remotely? [Y\/n] y\n ... Success!\n\nBy default, MariaDB comes with a database named 'test' that anyone can\naccess. This is also intended only for testing, and should be removed\nbefore moving into a production environment.\n\nRemove test database and access to it? [Y\/n] y\n - Dropping test database...\n ... Success!\n - Removing privileges on test database...\n ... Success!\n\nReloading the privilege tables will ensure that all changes made so far\nwill take effect immediately.\n\nReload privilege tables now? [Y\/n] y\n ... Success!\n\nCleaning up...\n\nAll done! If you've completed all of the above steps, your MariaDB\ninstallation should now be secure.\n\nThanks for using MariaDB!\n<\/code><\/pre>\n\n\n\nMariaDB Authentication<\/h3>\n\n\n\n
The new installations of MariaDB have two secure accounts are created during the installation.<\/p>\n\n\n\n
The accounts are root@localhost<\/code><\/strong> and mysql@localhost<\/strong><\/code>.<\/p>\n\n\n\nBoth accounts uses either of the unix_socket<\/code><\/strong> and the mysql_native_password<\/code><\/strong> authentication plugins.<\/p>\n\n\n\nunix_socket<\/strong><\/code> authentication plugin allows a system root<\/code> user or a user with sudo rights<\/strong><\/code> to login as root@locahost<\/strong><\/code> to MariaDB database without a password.<\/p>\n\n\n\nWith unix_socket<\/strong><\/code> authentication plugin, while being a root user, you can simply login by running either of the commands below;<\/p>\n\n\n\nmariadb<\/code><\/pre>\n\n\n\nor<\/p>\n\n\n\n
mariadb -u root<\/code><\/pre>\n\n\n\nEven if you run, mariadb -u root -p<\/strong><\/code>, and press ENTER for blank password, you will still login.<\/p>\n\n\n\nAs a user with sudo rights, prefix the commands above with sudo<\/strong><\/code>.<\/p>\n\n\n\nFor example, you can login as mysql user;<\/p>\n\n\n\n
sudo -u mysql mariadb<\/code><\/pre>\n\n\n\nEnable MariaDB password Authentication<\/h3>\n\n\n\n
With the two privileged accounts, root@localhost<\/code><\/strong> and mysql@localhost<\/code><\/strong>, anyone with access to it can login to MariaDB.<\/p>\n\n\n\nIt is not recommended to leave such user accounts with no password and all privileges, as this can pose a significant security risk to your database.<\/p>\n\n\n\n
The two accounts above uses mysql_native_password<\/code> plugin by default;<\/p>\n\n\n\nmariadb<\/code><\/pre>\n\n\n\nselect User,Host,plugin from mysql.user;<\/code><\/pre>\n\n\n\n\n+-------------+-----------+-----------------------+\n| User | Host | plugin |\n+-------------+-----------+-----------------------+\n| mariadb.sys | localhost | mysql_native_password |\n| root | localhost | mysql_native_password |\n| mysql | localhost | mysql_native_password |<\/strong>\n+-------------+-----------+-----------------------+\n3 rows in set (0.002 sec)\n\nMariaDB [(none)]>\n<\/code><\/pre>\n\n\n\nThe mysql_native_password<\/code> plugin is used as a failover for the unix_socket<\/code> plugin. Even if you have setup a password using MariaDB secure installation script, you can still login as those accounts without a password.<\/p>\n\n\n\nshow grants for root@localhost;<\/code><\/pre>\n\n\n\n\n+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| Grants for root@localhost |\n+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED VIA mysql_native_password USING '*9C6C35530EE4427B07D2FA4F9E119C3915D18940' OR unix_socket WITH GRANT OPTION |\n| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |\n+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n2 rows in set (0.000 sec)\n\nMariaDB [(none)]>\n<\/code><\/pre>\n\n\n\nshow grants for mysql@localhost;<\/code><\/pre>\n\n\n\n\n+------------------------------------------------------------------------------------------------------------------------------------------+\n| Grants for mysql@localhost |\n+------------------------------------------------------------------------------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO `mysql`@`localhost` IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION |\n+------------------------------------------------------------------------------------------------------------------------------------------+\n1 row in set (0.000 sec)\n\nMariaDB [(none)]>\n<\/code><\/pre>\n\n\n\nAs you can see above, we had already set the password for root user using the mysql_secure_installation command. But mysql user account has invalid password.<\/p>\n\n\n\n
Thus, enable password authentication.<\/p>\n\n\n\n
ALTER USER root@localhost identified by 'myStr0nP@ssW0rd';<\/code><\/pre>\n\n\n\nALTER USER mysql@localhost identified by 'myStr0nP@ssW0rd2';<\/code><\/pre>\n\n\n\nflush privileges;\nquit<\/code><\/pre>\n\n\n\nThis re-enables the MariaDB password authentication and hence, you can now login as non root or non sudo user.<\/p>\n\n\n\n
mariadb<\/code><\/pre>\n\n\n\nOr;<\/p>\n\n\n\n
sudo -u mysql mariadb<\/code><\/pre>\n\n\n\nSample output;<\/p>\n\n\n\n
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)<\/code><\/pre>\n\n\n\nProvide a password to be able to login;<\/p>\n\n\n\n
mariadb -u root -p<\/code><\/pre>\n\n\n\n\nEnter password: \nWelcome to the MariaDB monitor. Commands end with ; or \\g.\nYour MariaDB connection id is 35\nServer version: 11.0.1-MariaDB-1:11.0.1+maria~deb10 mariadb.org binary distribution\n\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nMariaDB [(none)]>\n<\/code><\/pre>\n\n\n\nSet Native Password Authentication Method as Default<\/h4>\n\n\n\n
When you set the password above, it completely disables unix_socke<\/code>t authentication plugin and instead use the msqyl_native_password<\/code> authentication method;<\/p>\n\n\n\nshow grants for root@localhost;<\/code><\/pre>\n\n\n\n\n+----------------------------------------------------------------------------------------------------------------------------------------+\n| Grants for root@localhost |\n+----------------------------------------------------------------------------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED BY PASSWORD '*73E1DDB4DA8B34D3080B082A8DFC863A56285DD4' WITH GRANT OPTION |\n| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |\n+----------------------------------------------------------------------------------------------------------------------------------------+\n2 rows in set (0.000 sec)\n\nMariaDB [(none)]>\n<\/code><\/pre>\n\n\n\nshow grants for mysql@localhost;<\/code><\/pre>\n\n\n\n\n+-----------------------------------------------------------------------------------------------------------------------------------------+\n| Grants for mysql@localhost |\n+-----------------------------------------------------------------------------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO `mysql`@`localhost` IDENTIFIED BY PASSWORD '*4C8C1832BBF14A360C2F70EA14CBD912AE0AF280' WITH GRANT OPTION |\n+-----------------------------------------------------------------------------------------------------------------------------------------+\n1 row in set (0.000 sec)\n\nMariaDB [(none)]>\n<\/code><\/pre>\n\n\n\nThat marks the end of our guide on installing MariaDB 11 on Ubuntu 22.04\/Ubuntu 20.04.<\/p>\n\n\n\n
Other Tutorials<\/h3>\n\n\n\n
You can check our other MySQL\/MariaDB related tutorials<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"Follow through this guide to learn how to install MariaDB 11 on Ubuntu 22.04\/Ubuntu 20.04. \u201cMariaDB 11\u00a0is the new major release series of MariaDB. It<\/p>\n","protected":false},"author":10,"featured_media":16363,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,299,928],"tags":[6595,6597,6596,6594],"class_list":["post-16342","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-database","category-mariadb","tag-install-mariadb-11-on-ubuntu","tag-install-mariadb-11-on-ubuntu-20-04","tag-install-mariadb-11-on-ubuntu-22-04","tag-install-mariadb-on-ubuntu","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/16342"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=16342"}],"version-history":[{"count":8,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/16342\/revisions"}],"predecessor-version":[{"id":22526,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/16342\/revisions\/22526"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/16363"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=16342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=16342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=16342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}