【MySQL第二章】安装MySQL库、配置文件编写、启动命令及MySQL5.7的权限处理

MySQL专辑【摘自《MySQL运维内参》作者:周彦伟老师】


一、安装MySQL库

1、准备配置文件

先创建一个名字默认为my.cnf的配置文件,路径放至/var/mysql/data_3306下面,内容如下

[mysqld]
port=3306
datadir=/var/mysql/data_3306
log_errot=/var/mysql/data_3306/error.log
basedir=/var/mysql/

2、执行创建数据库命令

/var/mysql/bin/mysqld --defaults-file=/var/mysql/data_3306/my.cnf --initialize --user=mysql

执行之后,在目录/var/mysql/data_3306/中生成的目录及文件如下
在这里插入图片描述
默认的数据库都生成了,同时也生成了指定的error.log文件;sys库为MySQL5.7中新加入的库。
从上图中可以看到,所有的库文件及目录都是通过文件组mysql及用户mysql创建的。
3、MySQL启动
通过1中配置文件启动MySQL的命令如下:

/var/mysql/bin/mysqld --defaults-file=/var/mysql/data_3306/my.cnf --user=mysql

此时,可以通过日志文件看到,服务器已经成功启动,也可以通过ps -ef | grep mysqld来查看进程信息

二、MySQL5.7的权限处理

1、连接报错

启动完成之后,执行下面连接命令:

mysql -uroot -h127.0.0.1 -P3306

系统直接报错,提示如下信息:

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

这个现象是正常的,在MySQL5.7新版本中,调整了安全策略,新安装数据库之后,默认情况下root账号不像5.6一样没有密码,在5.7版本中,数据库启动时为root账号随机生成一个密码,存储在了log_error文件中,生成信息如下所示:

2017-01-10T04:22:05.200129Z 1 [Note] A temporary password is generated for root@localhost: JqJhi1g,?o0r

这里可以看到,可以用来临时登录的用户是root@localhost,而密码是“JqJhi1g,?o0r”,这个密码很不规则,很复杂,安全性比较高,但只是用来临时登录的。在登录之后MySQL5.7要求必须要修改密码,不然做不了其他事情,比如show variables like “%sock%”;
未修改临时密码执行SQL命令报错图示
从上图可以看出,MySQL提醒,必须要通过ALTER USER语句修改密码之后才可以正常使用,所以通过下面的语句,先修改了root账号。

alter user 'root'@'localhost' identified by 'new password';

这样从当前会话退出去之后,就可以使用这个密码来登录了。

【缺陷】

上文中的处理使得自动化程序变得比较麻烦。

【解决】

MySQL提供了一种兼容方式,在初始化数据库时,可以通过指定参数–initialize-insecure来初始化,这样一来,其行为就与MySQL5.6及之前版本是一致的了。
这种方法给自动化运维带来了方便,不过背离了MySQL5.7这种处理的初衷,所以需要想清楚这个可能造成的不安全因素。
这点从日志文件/var/mysql/data_3306/error.log中就可以看出来,内容如下。

2017-01-10T04:45:56.249101Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off  the --initialize-insecure option.

第二章完毕,下一章为MySQL启动过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值