1

Is there a script that I can run to get an email when someone else other than me logs in as root?

I'm new to MySQL. These are my contents of my.cnf:

[mysqld]
*Remove leading # and set to the amount of RAM for the most important data
cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

*innodb_buffer_pool_size = 128M

*Remove leading # to turn on a very important data integrity option: logging

*changes to the binary log between backups.

*log_bin

*Remove leading # to set options mainly useful for reporting servers.

*The server defaults are faster for transactions and fast SELECTs.

*Adjust sizes as needed, experiment to find the optimal values.

*join_buffer_size = 128M

*sort_buffer_size = 2M

*read_rnd_buffer_size = 2M

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

*Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

port=1433

Please suggest a way to get an email alert if someone logs in as root into MySQL.

1
  • Check out the authentication plugins.
    – Rick James
    Oct 1, 2016 at 15:18

1 Answer 1

0

There are multiple ways to go with this but using logs is the simplest way as there is no need of creating table inside mysql to log the root or user login with timestamp as mentioned in : http://www.fromdual.com/sites/default/files/logon_trigger_wp.pdf

I installed logtail and logcheck using yum, then wrote the following script and then created a cron job which runs this script:

#!/bin/sh

if [ -f foundadmin.txt ] then rm foundadmin.txt fi if [ -f send.txt ] then rm send.txt fi

/usr/sbin/logtail2 -f /var/log/mysqld.log -o mysqld.log.offset | grep "root@localhost on using Socket" > foundadmin.txt

if [ -s foundadmin.txt ] then echo "Subject: MYSQLDB Admin Login on $(hostname)" > send.txt cat foundadmin.txt >> send.txt /bin/mailx -s "Subject: MySQLDB Admin Login on $(hostname)" myemail@com < send.txt rm foundadmin.txt rm send.txt fi exit 0

#

this is the cron job to make it run every minute:

This is run a cron job in a time interval and mail the admins to notify

          • cd /opt/mysql-check ; ./mysql-notify-script.sh

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.