MySQL如何配置安全性、易用性

58次阅读
没有评论

共计 4391 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章给大家分享的是有关 MySQL 如何配置安全性、易用性的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

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

清除不安全的用户信息,设定管理员用户为 system,密码为 mysql。
具体操作步骤如下:

[mysql@JY-DB ~]$ mysql

Welcome to the MySQL monitor. 
Commands end with ; or \g.

Your MySQL connection
id is 1

Server version:
5.6.30-log JSS for mysqltest

Copyright (c) 2000,
2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered
trademark of Oracle Corporation and/or its

affiliates. Other
names may be trademarks of their respective

owners.

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)]
\q

Bye

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

[mysql@JY-DB ~]$ mysql

ERROR 1045 (28000): Access
denied for user root @ localhost (using password: NO)

[mysql@JY-DB ~]$
mysql -usystem -pmysql

Warning: 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 6

Server version:
5.6.30-log JSS for mysqltest

Copyright (c) 2000, 2016,
Oracle and/or its affiliates. All rights reserved.

Oracle is a registered
trademark of Oracle Corporation and/or its

affiliates. Other
names may be trademarks of their respective

owners.

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: Y

Create_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: Y

Create_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 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 \G

Empty set (0.00 sec)

(system@localhost)[(none)]

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

3.1 中间定义文件

创建中间定义文件,提高脚本的复用性。
vi /data/mysqldata/scripts/mysql_env.ini

# set env

MYSQL_USER=system

MYSQL_PASS= mysql

# check parameter

if [$# -ne 1]

then

  HOST_PORT=3306

else

  HOST_PORT=$1

fi

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

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

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

3.2 启动 MySQL 服务

/data/mysqldata/scripts/mysql_db_startup.sh

#!/bin/sh

source
/data/mysqldata/scripts/mysql_env.ini

echo Startup MySQL Service:
localhost_ ${HOST_PORT}

/usr/local/mysql/bin/mysqld_safe –defaults-file=/data/mysqldata/${HOST_PORT}/my.cnf

3.3 关闭 MySQL 服务

/data/mysqldata/scripts/mysql_db_shutdown.sh

#!/bin/sh

source
/data/mysqldata/scripts/mysql_env.ini

echo 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

/data/mysqldata/scripts/mysqlplus.sh

#!/bin/sh

source
/data/mysqldata/scripts/mysql_env.ini

echo 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_profile

source ~/.bash_profile

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

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

在上述配置完成的基础上,
就可以直接在 root 用户下编辑 /etc/rc.local 文件,追加内容:

# autostart MySQL

sudo -i -u mysql
/data/mysqldata/scripts/mysql_db_startup.sh 3306
/home/mysql/mysql_db_startup.log 2 1

感谢各位的阅读!关于“MySQL 如何配置安全性、易用性”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计4391字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)