前言
本教程适用于CentOS 6.x 32位系统,非32位系统必定会报错,非CentOS 6.x的系统可能会报错,请酌情使用!
安装MySQL 5.7
1.检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步使用yum安装时会报错:
yum list installed | grep mysql
yum -y remove mysql-libs.i686
成功卸载后会出现如下图
由于CentOS官方已经不再支持CentOS 6,因此无法使用yum,CentOS官方也给这些还不想把CentOS 6扔进垃圾堆的用户保留了最后一个版本的镜像,只是这个镜像不会再有更新了,因此需要更换CentOS的yum源
一键修复(直接copy到ssh运行即可)
sed -i “s|enabled=1|enabled=0|g” /etc/yum/pluginconf.d/fastestmirror.conf
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache
2.从mysql的官网下载mysql57-community-release-el6-5.noarch.rpm(注意这里的el6-5即适配RHEL6.5的版本,如果下载了其它版本后面的安装过程中可能会报错):
wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
3.安装第一步下载的rpm文件:
yum install mysql-community-release-el6-5.noarch.rpm
安装成功后,我们可以看到/etc/yum.repos.d/目录下增加了mysql-community-source.repo和mysql-community.repo以下两个文件
ls /etc/yum.repos.d
3.查看mysql57的安装源是否可用
yum repolist enabled | grep mysql
如图所示,首次查看源的时候默认是mysql56的版本,但是我们需要使用mysql57,因此需要自行修改一下配置文件
vim /etc/yum.repos.d/mysql-community.repo
使mysql57下面的enable=1,其他设为enable=0
4.使用yum安装mysql:
yum install mysql-community-server --nogpgcheck
[scode type="yellow"]若不在后面填写--nogpgcheck的话,可能会出现报错[/scode]
5.启动mysql服务:
service mysqld start
6.查看root密码:
grep "password" /var/log/mysqld.log
现在必须立刻修改密码,不然会报错:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
7.修改密码(如果在此步报错ERROR 1819,请向下翻查看原因及解决方法):
首先需要进入mysql
mysql -u root -p
输入上方的代码后会提示输入密码,这个时候就需要输入第六步查看到的默认生成root密码
输入完成后,会进入到mysql的界面
随后就需要修改密码了
[scode type="red"]下方的代码中不要全部复制!!不要全部复制!!!,只需要复制“ mysql> ”之后的内容即可![/scode]
下方代码中,“newpass” 是新密码!
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
[scode type="share"]若此步骤出现如下图的1819错误,请查看文章后的解决方法[/scode]
8.查看mysqld是否开机自启动,并设置为开机自启动:
首先需要退出mysql的界面,进入系统的ssh界面,输入代码:
mysql> quit
出现如下图的提示后开始检查并设置mysql开机自启
chkconfig --list | grep mysqld
chkconfig mysqld on
9.修改字符集为UTF-8:
vim /etc/my.cnf
在[mysqld]部分添加:
character-set-server=utf8
在文件末尾新增[client]段,并在[client]段添加:
default-character-set=utf8
如下图所示:
修改好之后重启mysqld服务:
service mysqld restart
进入mysql,查看修改结果:
mysql -u root -p
随后输入密码进入mysql
mysql> show variables like "%character%";
如下图所示:
至此,MySQL安装结束!可以进入navicat尝试连接一下看看能否使用,其中主机地址为虚拟机的ip
可能遇到的问题
一.在修改密码步骤,若设置的密码为简单密码,可能会出现如下错误:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这一错误其实与validate_password_policy值的设置有关:
validate_password_policy值默认为1,即MEDIUM,所以刚开始设置的密码必须符合长度要求,且必须含有数字,小写或大写字母,特殊字符
如果我们只是做为测试用而不需要如此复杂的密码,可使用如下方式修改validate_password_policy值
mysql> set global validate_password_policy=0;
提示如下内容则设置成功
Query OK, 0 rows affected (0.00 sec)
这样,对密码要求就只有长度了,而密码的最小长度由validate_password_length值决定
validate_password_length参数默认为8,它有最小值的限制,最小值为:
validate_password_number_count+ validate_password_special_char_count+(2 * validate_password_mixed_case_count)
其中,validate_password_number_count指定了密码中数字的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。这些参数的默认值均为1,所以validate_password_length最小值为4,如果显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4
设置validate_password_length的值:
mysql> set global validate_password_length=4;
提示如下内容则设置成功
Query OK, 0 rows affected (0.00 sec)
如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改。
二.Navicat连接数据库出现2003、1130报错
1.在windows下,cmd 进入telnet查看端口情况
[scode type="yellow"]使用telnet前需开启Windows功能中的telnet功能,并以管理员身份运行CMD[/scode]
telnet 192.168.1.100 3306
其中ip是虚拟机的ip.如果连接失败
2.在虚拟机下输入
netstat -anp| grep 3306
如上图结果中显示mysql 3306前面的ip不是0.0.0.0
3.修改/etc/my.cnf
在[mysqld]内加入下列代码
bind-address = 0.0.0.0
上面的意思是改为监听所有地址
开启MySQL远程访问权限 允许远程连接
从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:
mysql -u root -proot
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
操作完后切记执行以下命令刷新权限
FLUSH PRIVILEGES;
报错 ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’ 不予理会
至此再进入navicat,发现已经能成功连接虚拟机的mysql了!