RHCE - Part6 - mariadb
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