Difference between revisions of "MySQL"
(adds monitoring info) |
|||
Line 47: | Line 47: | ||
If you want more info than you can get from the direct query logging, then try [http://mtop.sourceforge.net/|mtop] | If you want more info than you can get from the direct query logging, then try [http://mtop.sourceforge.net/|mtop] | ||
+ | == Show grants == | ||
+ | <code>SHOW GRANTS</code> only shows privs for the current user. | ||
+ | <source lang="sql"> | ||
+ | show grants; | ||
+ | show grants for 'root'@'localhost'; | ||
+ | </source> | ||
+ | But this bash one-liner will show you all grants. <code>-B --batch</code> disables interactive behavior and doesn't use the history file | ||
+ | <code>-N --skip-column-names</code> <code>-e --execute</code> executes a command and quits (disables --force and history file.) | ||
+ | <source lang="bash"> | ||
+ | mysql -B -N -e "SELECT DISTINCT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') AS query FROM user" mysql | mysql | ||
+ | </source> | ||
[[Category:Database]] | [[Category:Database]] |
Revision as of 13:41, 6 May 2015
Installation[edit | edit source]
To get started, installing MySQL on RHEL is as simple as
yum install mysql-server
. However, you might get a message that your system is not registered to Red Hat Subscription Management (RHN in the old days), and thus the packages are not visible. To remedy this, you would of course use subscription-manager
to register the host with Red Hat Subscription Management.
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h `hostname` password 'new-password'
# but it's easier and better to run
/usr/bin/mysql_secure_installation
# which will give you the option of removing the test database and removing the anonymous user created by default. This is a must for production servers.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
It's a good idea to setup a local configuration file for the system 'root' user, who can connect to the database server as db user 'root' by default when using the mysql command line client (ie. when you are user 'root' and type 'mysql' at the command line in a bash shell)
cat /root/.my.cnf
[client]
user=root
password=giveMeSomeDBgoodne55
What's going on?[edit | edit source]
Want to find out what's going on in your MySQL server, but don't want to install client tools and access? Just make sure that the General Query Log is turned on, and tail the log file:
SHOW VARIABLES LIKE "general_log%";
+------------------+----------------------------+
| Variable_name | Value |
+------------------+----------------------------+
| general_log | OFF |
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
mysql> SET GLOBAL general_log = 'ON';
Then you can tail the log file to see what it's doing:
tail -f /var/run/mysqld/mysqld.log
Be sure to turn off the log or your disk will fill up and you will not be happy.
mysql> SET GLOBAL general_log = 'OFF';
If you want more info than you can get from the direct query logging, then try [1]
Show grants[edit | edit source]
SHOW GRANTS
only shows privs for the current user.
show grants;
show grants for 'root'@'localhost';
But this bash one-liner will show you all grants. -B --batch
disables interactive behavior and doesn't use the history file
-N --skip-column-names
-e --execute
executes a command and quits (disables --force and history file.)
mysql -B -N -e "SELECT DISTINCT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') AS query FROM user" mysql | mysql