从MySQL5.7.4起,以RPM包的方式安装后的MySQL的部署默认是安全的,并且有这些特点:
在大多数情况下,你只需要安装MySQL-server和MySQL-client安装包就可以安装上一个标准功能的MySQL。对于一个标准安装来说,其他的安装包不是必需的。
MySQL的安装程序会创建一个单独的root账户:'root'@'localhost',并自动为这个账户生成一个初始的随机密码,并将此密码标志为已过期。
对于MySQL5.7.6和更高的版本来说,初始的随机root密码是被写入错误日志的。对于MySQL5.7.4和5.7.5版本来说,密码是被写入以HOME环境变量命名的目录中的.mysql_secret文件中的。根据操作系统,可以使用诸如sudo这样的命令让HOME环境变量的值指向root系统用户的home目录。.mysql_secret文件是以只允许创建它的系统用户访问的600模式而创建的。(版本差异的产生,是因为自5.7.6版本起数据目录和root账户由mysqld --initialize来初始化,5.7.6以前的版本由mysql_install_db来初始化)。
不创建MySQL匿名账户。
不创建测试数据库。
作为上述操作所产生的结果,在安装完成后你需要去启动服务,以root身份,用初始的随机密码来进行连接,并且在连接后选择一个新的密码。在完成这些操作之前,root用户无法做其他的任何事情。修改密码,你可以用ALTER USER语句(例如,通过mysql客户端)。重设密码后,如果有创建.mysql_secret文件就把它删除;否则,在你执行mysql_secure_installation这条命令的时候,可能会再次看到那个文件和过期的root密码成为确认安全部署的一部分。
下面开始安装MySQL5.7.11企业版,要先配置好yum源,按照下面的步骤一步一步做就可以。
这里把所有的rpm包都拷贝到/opt目录下了。
这里强调一下,一定要用root用户来安装,安装后会自动创建mysql用户和mysql用户组。
[root@mysql opt]# rpm -qa | grep -i mysql
[root@mysql opt]# yum -y remove mysql-*
[root@mysql opt]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.x86_64
[root@mysql opt]# rpm -e mariadb-libs-5.5.44-2.el7.x86_64 --nodeps
[root@mysql opt]# rpm -ivh mysql-commercial-common-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# rpm -ivh mysql-commercial-libs-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# rpm -ivh mysql-commercial-libs-compat-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# rpm -ivh mysql-commercial-embedded-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# rpm -ivh mysql-commercial-devel-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# rpm -ivh mysql-commercial-embedded-devel-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# rpm -ivh mysql-commercial-client-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# rpm -ivh mysql-commercial-server-5.7.11-1.1.el6.x86_64.rpm
[root@mysql opt]# yum -y install perl-DBI
perl-DBI
perl-Compress-Raw-Bzip2
perl-Compress-Raw-Zlib
perl-Data-Dumper
perl-IO-Compress
perl-Net-Daemon
perl-PlRPC
[root@mysql opt]# rpm -ivh mysql-commercial-test-5.7.11-1.1.el6.x86_64.rpm
接下来修改配置文件
[root@mysql MySQL]#vi /etc/my.cnf
加入 skip-grant-tables
跳过密码检测
启动mysql
[root@mysql MySQL]#service mysqld start
[root@mysql MySQL]#mysql –u root –p
登录,无需密码直接回车
选择数据库
mysql>use mysql;
设置密码失效为"N"
mysql>update user set password_expired="N" where user="root";
设置密码为”123456”
mysql> update user set authentication_string=password("123456") where user="root";
刷新生效
mysql> flush privileges;
退出
mysql>quit;
修改配置
[root@mysql MySQL]#vi /etc/my.cnf
注释或删除 #skip-grant-tables
用新密码登陆
[root@mysql MySQL]#mysql –u root –p
修改密码
[root@mysql MySQL]#mysqladmin -u 用户名 -p 旧密码 password 新密码
[root@mysql MySQL]#mysqladmin -u root –p 123456 password "123-abcABC"
mysql>set password=password("123456");
查看现有的密码策略
mysql>show variables like 'val%'
validate_password_dictionary_file参数是指定密码验证的字典文件路径。
validate_password_length参数是密码的长度,这个参数由下面的公式生成
validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)
validate_password_mixed_case_count参数是密码中英文字符大小写的个数,当密码策略是MEDIUM或以上时生效。
validate_password_number_count参数是密码中至少含有的数字个数,当密码策略是MEDIUM或以上时生效。
validate_password_policy这个参数可以设为0、1、2,分别代表从低到高的密码强度,此参数的默认值为1,如果想将密码强度改若,则更改此参数为0。
validate_password_special_char_count参数是密码中非英文数字等特殊字符的个数,当密码策略是MEDIUM或以上时生效。
更改密码策略
mysql> set global validate_password_length=0; --更改密码长度
mysql> set global validate_password_policy=0; --更改密码策略为LOW
允许mysql远程访问
赋予任何主机访问数据的权限
mysql>grant all privileges on *.* to ‘root’@’%’with grant option;
mysql>grant all privileges on *.* to ‘root’@’%’identified by ‘123-abcABC’ with grant option;
default-character-set = utf8
通过增加参数 –default-character-set = utf8 解决乱码问题
查看防火墙状态
systemctl status firewalld
临时关闭防火墙命令。重启电脑后,防火墙自动起来
systemctl stop firewalld
永久关闭防火墙命令。重启后,防火墙不会自动启动
systemctl disable firewalld
打开防火墙命令systemctl enable firewalld
mysql默认已是开机自启动