server = srv.example.local
client = 192.168.2.20/24


MARIADB SERVER

Install mariadb and mariadb-server:

# yum install -y mariadb mariadb-server

Enable and start mariadb:

# systemctl enable mariadb
# systemctl start mariadb

Run mysql_secure_installation to set the root password, remove anonymous users and test database:

# mysql_secure_installation
Enter current password for root (enter for none): enter
Set root password? [Y/n] enter
New password: password1
Re-enter new password: password1
Remove anonymous users? [Y/n] enter
Disallow root login remotely? [Y/n] enter
Remove test database and access to it? [Y/n] enter
Reload privilege tables now? [Y/n] enter

Login as root:

# mysql -uroot -p

Display databases:

MariaDB[(none)]> show databases;

Create a database, a table and insert data:

MariaDB[(none)]> create database db1;
MariaDB[(none)]> use db1;
MariaDB[db1]> create table table1(id INT(10) unsigned, name VARCHAR(20), age INT(10));
MariaDB[db1]> insert into table1(id,name,age) values (1,"person1",25);
MariaDB[db1]> insert into table1(id,name,age) values (2,"person2",55);

Display table structure:

MariaDB[db1]> describe table1;

Get items from table1:

MariaDB[db1]> select * from table1;
MariaDB[db1]> select name,age from table1;
MariaDB[db1]> select name,age from table1 where age=25;

Create a user:

MariaDB[db1]> create user alice@192.168.2.20 identified by 'password2';
MariaDB[db1]> grant all on db1.* to alice@192.168.2.20;
MariaDB[db1]> flush privileges;

Change password for alice:

MariaDB[db1]> set password for alice@192.168.2.20 = password('newpassword2');

Display database users:

MariaDB[db1]> select host,name,password from mysql.user;

Delete user:

MariaDB[db1]> drop user alice@192.168.2.20;

Display variables:

MariaDB[db1]> show variables like 'port';
MariaDB[db1]> show variables like 'datadir';
MariaDB[db1]> show variables where variable_name='port' or variable_name='datadir';

Exit the CLI:

MariaDB[db1]> exit

Allow port 3306 in firewalld:

# firewall-cmd --permanent --add-port=3306/tcp
# firewall-cmd --reload

Or, use a rich rule:
# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.2.20 port port=3306 protocol=tcp accept'
# firewall-cmd --reload

Change listening port to 8888/tcp and adjust SELinux context on port 8888/tcp:

# semanage port -at -mysqld_port_t 8888 -p tcp
# vi /etc/my.cnf
[mysqld]
port=8888
[...]

Restart mariadb, and update firewall rules:

# systemctl restart mariadb
# firewall-cmd --permanent --remove-port=3306/tcp
# firewall-cmd --permanent --add-port=8888/tcp
# firewall-cmd --reload

Change mariadb datadir:

# systemctl stop mariadb
# mkdir /srv/mariadb
# semanage fcontext -at mysqld_db_t "/srv/mariadb(/.*)?"
# restorecon -v /srv/mariadb
# chown mysql: /srv/mariadb
# cp -Rp /var/lib/mysql/* /srv/mariadb/

# vi /etc/my.cnf
[mysqld]
[...]
#datadir=/var/lib/mysql
datadir=/srv/mariadb
[...]

Check owner, permissions and SELinux contexts of the new datadir:

# ls -alZ /srv/mariadb

Start mariadb:

# systemctl start mariadb


MARIADB REMOTE CLIENT

Install mariadb:

# yum install -y mariadb

Connect to a remote mariadb server on port 8888/tcp:

# mysql -ualice -p -hsrv.example.local -P8888