mysql安全小贴士_MySQL数据库登录小贴士

在数据库变更,维护等工作中要多次进行登录,这里以数据库管理用户root@localhost进行说明,一般会有下面的命令行:

mysql@db01: ~$mysql --host=localhost --password --port=3306 --socket=/home/3306/mysql.sock--user=root

Enter password:

若每次都敲入或粘贴这一长串命令,然后再输入密码,感觉真是不够方便快捷.

在MySQL 5.0, 5.5等较早版本中,可进行如下操作,为了便于说明,下面以mysql用户(非root)登录数据库所在的Linux操作系统.

在mysql用户家目录下建立隐藏文件.my.cnf,注意权限要设置为600,里面写入上面命行中的各参数,由于其和登录相关,暂且称为登录文件,查看如下:

mysql@db01: ~$ ls -al .my.cnf

-rw-------. 1 mysql mysql 99Aug 17 21:31 .my.cnf

mysql@db01: ~$ cat .my.cnf

[client]

host = localhost

password = 123456

port = 3306

socket = /home/3306/mysql.sock

user = root

然后直接在命令行敲入mysql(MySQL命令行工具),回车就可登录数据库了.

在MySQL 5.6(5.6.6)及之后版本,有了命令mysql_config_editor,能比较优美的完成上面需求.

使用mysql_config_editor建立登录文件,如下命令行上--login-path=mytest中的mytest,称为登录路径(loginpath).

mysql@db01: ~$mysql_config_editor set --host=localhost --login-path=mytest --password--user=root --socket=/home/3306/mysql.sock --port=3306

Enter password:   

这时也会在用户家目录下生成一个隐藏文件,名称是.mylogin.cnf,观察该登陆文件的特点:是被加密的,显示其内容时,密码也被星号替换了.

mysql@db01: ~$ ls -al.mylogin.cnf

-rw-------. 1 mysql mysql 192Aug 17 21:39 .mylogin.cnf

mysql@db01: ~$ file.mylogin.cnf

.mylogin.cnf: data

mysql@db01: ~$mysql_config_editor print --all

[mytest]

user = root

password = *****

host = localhost

socket = /home/3306/mysql.sock

port = 3306

然后按如下命令行测试,即可登入数据库.

mysql@db01: ~$ mysql--login-path=mytest

若想在登录文件中添加第二个登录路径,怎么做呢…只需要调整上面mysql_config_editor命令行中相应参数值即可,然后查看登录文件:

mysql@db01: ~$mysql_config_editor print --all

[mytest]

user = root

password = *****

host = localhost

socket = /home/3306/mysql.sock

port = 3306

[myremote]

user = root

password = *****

host = 192.168.138.134

port = 3306

又若想修改登录路径myremote的密码,即password的值,又怎么做呢…

a.删除登录路径myremote

mysql@db01: ~$mysql_config_editor remove--login-path=myremote

b.查看登录文件,确认其已删除,只剩下mytest

mysql@db01: ~$mysql_config_editor print --all

[mytest]

user = root

password = *****

host = localhost

socket = /home/3306/mysql.sock

port = 3306

c.添加登录路径myremote,重新设定新密码

mysql@db01: ~$mysql_config_editor set --host=192.168.138.134 --login-path=myremote --password--user=root --port=3306

Enter password:

到这里,命令mysql_config_editor就基本介绍完了.

最后看一个问题,在登录路径mytest中,删除socket的信息,是否还能登录呢…

mysql@db01: ~$mysql_config_editor remove --login-path=mytest --socket

mysql@db01: ~$mysql_config_editor print --login-path=mytest

[mytest]

user = root

password = *****

host = localhost

port = 3306

测试发现,还是可以登录的,明明缺少了socket的信息呀…

确实是这样,只因为mysql会按照该顺序/etc/my.cnf,/etc/mysql/my.cnf, /usr/local/mysql/etc/my.cnf,  ~/.my.cnf寻找需要的socket参数,使用如下方式可获取这些文件的信息(根据MySQL安装的不同,可能某些文件的路径不同):

mysql@db01: ~$ mysql --help |grep -A 1 'Default options'

Default options are read fromthe following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf/usr/local/mysql/etc/my.cnf ~/.my.cnf

注意,若这些文件中有相同的参数,后面文件中的参数会覆盖前面文件的;对于登录路径mytest中已有的参数, mysql则不会再寻找.

上面不是还保留着文件.my.cnf嘛, mysql会从中找到socket =/home/3306/mysql.sock,然后就登陆进去了.

验证下,在文件.my.cnf中,添加井号#,注释掉socket行,然后再尝试登录,发现报错了:

mysql@db01: ~$ mysql--login-path=mytest

ERROR 2002 (HY000): Can'tconnect to local MySQL server through socket '/tmp/mysql.sock' (2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值