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<\/pre>\n\n\n\nmariadb from 11.3.2-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper<\/pre>\n\n\n\nRunning MariaDB 11 on Ubuntu 24.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<\/pre>\n\n\n\n\u25cf mariadb.service - MariaDB 11.3.2 database server\n Loaded: loaded (\/usr\/lib\/systemd\/system\/mariadb.service; enabled; preset: enabled)\n Drop-In: \/etc\/systemd\/system\/mariadb.service.d\n \u2514\u2500migrated-from-my.cnf-settings.conf\n Active: active (running) since Sun 2024-05-12 18:18:13 UTC; 50s ago\n Docs: man:mariadbd(8)\n https:\/\/mariadb.com\/kb\/en\/library\/systemd\/\n Process: 27007 ExecStartPre=\/usr\/bin\/install -m 755 -o mysql -g root -d \/var\/run\/mysqld (code=exited, status=0\/SUCCESS)\n Process: 27009 ExecStartPre=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n Process: 27011 ExecStartPre=\/bin\/sh -c [ ! -e \/usr\/bin\/galera_recovery ] && VAR= || VAR=`cd \/usr\/bin\/..; \/usr\/bin\/galera_recovery`; [ $? -eq 0 ] && systemct>\n Process: 27085 ExecStartPost=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n Process: 27087 ExecStartPost=\/etc\/mysql\/debian-start (code=exited, status=0\/SUCCESS)\n Main PID: 27071 (mariadbd)\n Status: \"Taking your SQL requests now...\"\n Tasks: 14 (limit: 30453)\n Memory: 102.3M (peak: 107.2M)\n CPU: 1.457s\n CGroup: \/system.slice\/mariadb.service\n \u2514\u250027071 \/usr\/sbin\/mariadbd\n\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] InnoDB: log sequence number 46980; transaction id 14\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] InnoDB: Loading buffer pool(s) from \/var\/lib\/mysql\/ib_buffer_pool\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] Plugin 'FEEDBACK' is disabled.\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] Plugin 'wsrep-provider' is disabled.\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] InnoDB: Buffer pool(s) load completed at 240512 18:18:13\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] Server socket created on IP: '127.0.0.1'.\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] mariadbd: Event Scheduler: Loaded 0 events\nMay 12 18:18:13 noble mariadbd[27071]: 2024-05-12 18:18:13 0 [Note] \/usr\/sbin\/mariadbd: ready for connections.\nMay 12 18:18:13 noble mariadbd[27071]: Version: '11.3.2-MariaDB-1:11.3.2+maria~ubu2204' socket: '\/run\/mysqld\/mysqld.sock' port: 3306 mariadb.org binary distribut>\nMay 12 18:18:13 noble systemd[1]: Started mariadb.service - MariaDB 11.3.2 database server.\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
sudo systemctl start mariadb<\/pre>\n\n\n\nTo restart;<\/p>\n\n\n\n
sudo systemctl restart mariadb<\/code><\/pre>\n\n\n\nTo stop the service;<\/p>\n\n\n\n
sudo systemctl stop mariadb<\/pre>\n\n\n\nEnable the service from running on system boot;<\/p>\n\n\n\n
sudo systemctl enable mariadb<\/pre>\n\n\n\nDisable the service from running on system boot;<\/p>\n\n\n\n
sudo systemctl disable mariadb<\/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
sudo mariadb-secure-installation<\/pre>\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] \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] \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] \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] \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] \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<\/pre>\n\n\n\nor<\/p>\n\n\n\n
mariadb -u root<\/code><\/pre>\n\n\n\nIf you are a non-root user with sudo account;<\/p>\n\n\n\n
sudo mariadb<\/code><\/pre>\n\n\n\nOr;<\/p>\n\n\n\n
sudo mariadb -u root<\/code><\/pre>\n\n\n\nEven if you run,\u00a0mariadb -u root -p<\/strong><\/code>, and press ENTER for blank password, you will still login.<\/p>\n\n\n\nYou can also login as mysql<\/strong> user;<\/p>\n\n\n\nsudo -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\nsudo mariadb<\/code><\/pre>\n\n\n\nselect User,Host,plugin from mysql.user;<\/code><\/pre>\n\n\n\nMariaDB [(none)]> select User,Host,plugin from mysql.user;\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 |\n| dvwa | localhost | mysql_native_password |\n+-------------+-----------+-----------------------+<\/strong>\n4 rows in set (0.001 sec)\n\nMariaDB [(none)]>\n<\/code><\/pre>\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| 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<\/code><\/pre>\n\n\n\nshow grants for mysql@localhost;<\/code><\/pre>\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| GRANT PROXY ON ''@'%' TO 'mysql'@'localhost' WITH GRANT OPTION |\n+------------------------------------------------------------------------------------------------------------------------------------------+\n2 rows in set (0.000 sec)\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';<\/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
sudo mariadb<\/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\nOr;<\/p>\n\n\n\n
sudo -u mysql mariadb<\/code><\/pre>\n\n\n\nERROR 1045 (28000): Access denied for user 'mysql'@'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\nEnter password: \nWelcome to the MariaDB monitor. Commands end with ; or \\g.\nYour MariaDB connection id is 61\nServer version: 11.3.2-MariaDB-1:11.3.2+maria~ubu2204 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;<\/pre>\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.001 sec)\n<\/code><\/pre>\n\n\n\nshow grants for mysql@localhost;<\/pre>\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| GRANT PROXY ON ''@'%' TO 'mysql'@'localhost' WITH GRANT OPTION |\n+-----------------------------------------------------------------------------------------------------------------------------------------+\n2 rows in set (0.001 sec)\n<\/code><\/pre>\n\n\n\nThat marks the end of our guide on installing MariaDB 11 on Ubuntu 24.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 24.04. \u201cMariaDB 11 is the new major release series of MariaDB. It ships<\/p>\n","protected":false},"author":10,"featured_media":9145,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,299,928],"tags":[3981,7488,7396],"class_list":["post-22527","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-database","category-mariadb","tag-mariadb-11","tag-mariadb-apt-repositories","tag-ubuntu-24-04","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\/22527"}],"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=22527"}],"version-history":[{"count":2,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/22527\/revisions"}],"predecessor-version":[{"id":22529,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/22527\/revisions\/22529"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/9145"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=22527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=22527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=22527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}