一、CentOS 7 安装mysql 5.7
1、先到清华大学镜像站找到想要安装的mysql版本,我使用的是mysql5.7,复制镜像地址(https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/mysql57-community-release-el7-10.noarch.rpm)
2、安装
#下载
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/mysql57-community-release-el7-10.noarch.rpm
#本地安装
yum localinstall mysql57-community-release-el7-10.noarch.rpm -y
# 查看yum repository是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
# 下载mysql server
yum install mysql-community-server
# 启动mysql
systemctl start mysqld
# 查看mysql状态
systemctl status mysqld
# 查看临时生成的密码,会显示临时密码,可以使用临时密码登录,然后修改
grep 'temporary password' /var/log/mysqld.log
# 登录mysql
mysql -uroot -p
Enter password:
#就登录成功了
3、安装完成并登录成功后,修改数据库密码
#修改数据库密码
#设置的新密码一般要包括大小写英文字母、数字以及特殊符号,要超过8位
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';
#重新登录
mysql -uroot -pxxx!
二、问题的解决
1、解决mysql无法远程连接的问题
use mysql;
select host,user from user where user='root'; # 查看host,正常情况,host=localhost
update user set host='%' where user='root'; #更改host为所有ip
select host,user from user where user='root'; # 查看更改,此时 host=%
2、问题描述
Error: 1251
Message: Client does not support authentication protocol requested by server; consider upgrading MySQL client
解决方法:
USE mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的数据库密码';
FLUSH PRIVILEGES;
3、解决完以上两个问题后,远程连接会出现
Can't connect to MySQL server on ...
(1)查看mysql服务以及端口占用情况
#查看mysql服务
netstat -tap | grep mysql
说明mysql服务是处于监听状态的
#查看3306端口占用情况
netstat -apn | grep 3306
可以看到3306端口也是处于监听状态的
(2) 查看httpd_can_network_connect的值是否为off
getsebool -a | grep httpd
我的已经是on了,如果是off状态的话:
#修改httpd_can_network_connect的值为on
setsebool httpd_can_network_connect 1
#重新验证httpd_can_network_connect
getsebool -a | grep httpd
#重启httpd服务
systemctl start httpd.service
(3)查看防火墙状态
我尝试ping了一下我的linux系统的IP地址,可以ping成功,但是telnet 3306端口时连接不成功,应该是防火墙的问题
#查看firewall启动情况
systemctl status firewalld
#启动friewall
systemctl start firewalld
#开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#重启防火墙服务
systemctl restart firewalld.service
再次进行远程连接就能连接成功了。
三、mysql字符编码修改
#登录mysql
mysql -uroot -pXXX(XXX为密码)
#查看mysql字符集
show variables like 'character%';
#character_set_database和character_set_server的默认字符集还是latin1
#将其修改为utf8
#修改mysql的/etc/my.cnf ,在[mysqld]字段里加入character_set_server=utf8
character_set_server=utf8
#重启数据库服务
systemctl restart mysqld
#再次查看mysql字符编码
show variables like 'character%';
#character_set_database和character_set_server的默认字符集就是utf8了
这样在CentOS环境下mysql就安装好了,并且数据库可以实现远程连接。