博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL入门03-MySQL配置安全性、易用性
阅读量:6636 次
发布时间:2019-06-25

本文共 5189 字,大约阅读时间需要 17 分钟。

一、

二、

三、

四、

一、设定管理员用户和密码

清除不安全的用户信息,设定管理员用户为system,密码为mysql。

具体操作步骤如下:

[mysql@JY-DB ~]$ mysqlWelcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.6.30-log JSS for mysqltestCopyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.(root@localhost)[(none)]> (root@localhost)[(none)]> select user, host from mysql.user;+------+----------------+| user | host           |+------+----------------+| root | 127.0.0.1      || root | ::1            ||      | jy-db          || root | jy-db          ||      | localhost      || root | localhost      |+------+----------------+6 rows in set (0.04 sec)(root@localhost)[(none)]> delete from mysql.user where (user,host) not in (select 'root', 'localhost');Query OK, 5 rows affected (0.05 sec)(root@localhost)[(none)]> update mysql.user set user='system', password=password('mysql');Query OK, 1 row affected (0.03 sec)Rows matched: 1  Changed: 1  Warnings: 0(root@localhost)[(none)]> flush privileges;Query OK, 0 rows affected (0.03 sec)(root@localhost)[(none)]> \qBye

上面修改完成并刷新权限后,再次测试MySQL数据库连接,就必须需要指定用户名和密码登录了。具体操作步骤如下:

[mysql@JY-DB ~]$ mysqlERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)[mysql@JY-DB ~]$ mysql -usystem -pmysqlWarning: Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 6Server version: 5.6.30-log JSS for mysqltestCopyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.(system@localhost)[(none)]>

二、处理test库权限隐患

查看当前mysql.db信息:

(system@localhost)[(none)]> select * from mysql.db \G*************************** 1. row ***************************                 Host: %                   Db: test                 User:           Select_priv: Y          Insert_priv: Y          Update_priv: Y          Delete_priv: Y          Create_priv: Y            Drop_priv: Y           Grant_priv: N      References_priv: Y           Index_priv: Y           Alter_priv: YCreate_tmp_table_priv: Y     Lock_tables_priv: Y     Create_view_priv: Y       Show_view_priv: Y  Create_routine_priv: Y   Alter_routine_priv: N         Execute_priv: N           Event_priv: Y         Trigger_priv: Y*************************** 2. row ***************************                 Host: %                   Db: test\_%                 User:           Select_priv: Y          Insert_priv: Y          Update_priv: Y          Delete_priv: Y          Create_priv: Y            Drop_priv: Y           Grant_priv: N      References_priv: Y           Index_priv: Y           Alter_priv: YCreate_tmp_table_priv: Y     Lock_tables_priv: Y     Create_view_priv: Y       Show_view_priv: Y  Create_routine_priv: Y   Alter_routine_priv: N         Execute_priv: N           Event_priv: Y         Trigger_priv: Y2 rows in set (0.00 sec)(system@localhost)[(none)]>

处理test库权限安全隐患:

(system@localhost)[(none)]> truncate table mysql.db;Query OK, 0 rows affected (0.04 sec)(system@localhost)[(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)(system@localhost)[(none)]> select * from mysql.db \GEmpty set (0.00 sec)(system@localhost)[(none)]>

三、自定义脚本提升易用性

3.1 中间定义文件

创建中间定义文件,提高脚本的复用性。

vi /data/mysqldata/scripts/mysql_env.ini

# set envMYSQL_USER=systemMYSQL_PASS='mysql'# check parameterif [ $# -ne 1 ]then    HOST_PORT=3306else    HOST_PORT=$1fi

由于文件包含密码等敏感信息,所以为了安全性,必须要修改文件的权限:

chmod 600 /data/mysqldata/scripts/mysql_env.ini

当然,如果对密码安全性要求很高,这里的配置文件中的密码可以置空,后续调用脚本手工输入密码即可。

3.2 启动MySQL服务

vi /data/mysqldata/scripts/mysql_db_startup.sh
#!/bin/shsource /data/mysqldata/scripts/mysql_env.iniecho "Startup MySQL Service: localhost_"${HOST_PORT}/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/${HOST_PORT}/my.cnf &

3.3 关闭MySQL服务

vi /data/mysqldata/scripts/mysql_db_shutdown.sh

#!/bin/shsource /data/mysqldata/scripts/mysql_env.iniecho "Shutdown MySQL Service: localhost_"${HOST_PORT}/usr/local/mysql/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PASS} -S /data/mysqldata/${HOST_PORT}/mysql.sock shutdown

3.4 快捷登录MySQL

vi /data/mysqldata/scripts/mysqlplus.sh

#!/bin/shsource /data/mysqldata/scripts/mysql_env.iniecho "Login MySQL Service: localhost_"${HOST_PORT}/usr/local/mysql/bin/mysql -u${MYSQL_USER} -p${MYSQL_PASS} -S /data/mysqldata/${HOST_PORT}/mysql.sock $2

最后,统一授予所有自定义脚本执行的权限:

chmod u+x /data/mysqldata/scripts/*.sh

配置mysql用户的环境变量,追加一行:

echo "export PATH=/data/mysqldata/scripts:\$PATH" >> ~/.bash_profilesource ~/.bash_profile

至此,就可以在任意路径下执行脚本,提升了MySQL操作的易用性。

四、设置开机自动启动MySQL服务

在上述配置完成的基础上,
就可以直接在root用户下编辑/etc/rc.local文件,追加内容:
# autostart MySQLsudo -i -u mysql /data/mysqldata/scripts/mysql_db_startup.sh 3306 > /home/mysql/mysql_db_startup.log 2>&1

Reference

  • 李丙洋. 涂抹MySQL. 水利水电出版社, 2014.
  • dev.mysql.com

转载地址:http://snsvo.baihongyu.com/

你可能感兴趣的文章
HDU 2871 Memory Control
查看>>
poj 1811 Prime Test
查看>>
ios 续费 问题 冰山一角
查看>>
一些奇怪的坑+好东西
查看>>
【Dairy】2016.10.24 - made 嘲讽垃圾
查看>>
查找表包含的页和页所在的表
查看>>
快速高效实现微信小程序图片上传与腾讯免费5G存储空间的使用
查看>>
vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式...
查看>>
mvc笔记(2012-11-02)
查看>>
求二叉排序树的镜像
查看>>
在StoryBoard对UICollectionViewCell 进行Autolayout是遇到的Xcode6.01的BUG
查看>>
后缀自动机板子和一些用法
查看>>
WPF 虚拟键盘
查看>>
正则表达式使用
查看>>
解决IE下返回json数据提示文件保存到问题
查看>>
Java设置session超时(失效)的时间
查看>>
New Concept English Two 17 43
查看>>
Java监听器
查看>>
带文字的GridView2Activity
查看>>
字符串、文件操作,英文词频统计预处理
查看>>