centos7.x 实操使用yum安装 mysql 服务器 5.6|5.7 版本,详细步骤,附常见安装配置错误以及解决方案。 基本上安装最常见的问题都解决了。
本文使用yum在线安装配置mysql5.7版本,离线安装什么时候有需求了再写文档。照顾小白,所以写的啰嗦一点(本帖安装的mysql5.7版本)。
1、先检查系统是否装有mysql(有的话注意要先卸载)
# rpm -qa |grep -i mysql
结果如图:(系统已经安装过一个mysql)如果版本不是你需要安装的,需要卸载。如果未安装,则什么都不显示。
卸载命令:
# yum remove mysql-communtity-*(依次全部卸载)
2.查看mysql的repo源,选则版本并下载。可以使用wget 或 离线下载后再上传到服务器
网页地址: http://repo.mysql.com/
2.1 选择你需要安装的版本等,复制链接(示例安装mysql5.7)
2.2 使用wget下载rpm包(注意版本需要根据自己的选择而定)
# wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
2.3 安装下载的rpm包
# sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
2.4 查看yum源是否存在刚刚下载的mysql repo
3.安装mysql服务
# sudo yum install mysql-server
安装成功后使用命令查看:
# rpm -qa |grep -i mysql
以上步骤如有报错,请参考本文最后的报错示例(可能有解决方案咯)
4.配置并使用mysql
4.1 配置数据库账号密码
# mysql -u root
错误 4.1.1 :
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决 4.1.1 :
原因:/var/lib/mysql的访问权限问题,将/var/lib/mysql的拥有者改为当前用户(tip:将命令中的root替换成相应的用户)
# chown -R root /var/lib/mysql/
# chown -R root /var/lib/mysql-files
修改后重启mysql服务:
# service mysqld restart
错误:4.1.2此时登陆会出现另外一个问题(mysql5.6 未出现,mysql5.7出现了此问题):
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
解决 4.1.2 :
方案1:使用命令获取随机密码
# grep "password" /var/log/mysqld.log
方案2:
1.执行 # vim /etc/my.cnf ,打开文件后,找到[mysqld]关键字,在[mysqld]下面一行添加skip-grant-tables 保存并退出
(centos版本不同路径可能是 /etc/mysql/my.cnf ,自行查找)
2.执行 # service mysqld restart,重启之后执行 # mysql -u root -p 再尝试登陆mysql,遇到需要输入密码,直接回车
到此能正常进入mysql命令行的话继续... ...
tip:
数据库后续配置远程登陆等操作完成后记得以下操作:
1.执行 # vim /etc/my.cnf,打开文件后, 把刚才添加的 skip-grant-tables 删掉,保存退出
2.执行 # service mysql restart。
错误:4.1.3
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决:
1.修改用户名密码
mysql>alter user 'root'@'localhost' identified by '123456';
2、刷新权限
mysql>flush privileges;
如果报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
说明你的密码强度太低,可以通过执行以下语句来解决
mysql>set global validate_password_policy=0;
设置数据库账号密码完成(mysql 5.6和5.7版本的user表字段不同,所以设置密码的sql语句有一些差异,自行测试)
mysql>use mysql; #使用mysql库
mysql>update user set password=password('123456') where user='root'; #mysql 5.6
mysql>update user set authentication_string=password('123456') where user='root'; #mysql 5.7
mysql>flush privileges; #写入权限
4.2 配置远程连接
tip:如再次在此步骤前发生了4.1.2的错误,则需要先将skip-grant-tables 删掉并重启服务后方可继续... ...
配置远程连接的作用简单一句话解释: 如果你要在别的机器连接这个数据库,就需要打开远程连接权限
场景1:你想root使用12345678从别的任何主机连接到mysql服务器,(给其它用户授权请灵活变通!!!)
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
场景2:如果你想允许某用户anyone(是否root用户皆可)从ip为192.168.0.123的主机连接到mysql服务器,并使用1234567890作为密码
mysql>GRANT ALL PRIVILEGES ON *.* TO 'anyone'@’192.168.0.123’ IDENTIFIED BY '1234567890' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
4.3 使用navicat等客户端工具测试mysql是否可以正常连接。 工具使用方法(略) ... ...
可能问题:navicat无法连接mysql服务器,防火墙问题解决方案
检查服务器防火墙是否开放3306端口
Centos7 firewalld 防火墙运行命令,并重启:
#firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
Centos6.5之前 iptables 防火墙运行命令
#vim /etc/sysconfig/iptables
在文件内添加下面命令行,然后重启
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
# service iptables restart
5.设置mysql服务开机自启
编辑系统文件:
# vim /etc/rc.local
添加service mysqld start