服务器安装MySql并远程访问
1. 安装Mysql
安装环境: CentOS7.5 MySQL5.7
-
安装步骤
-
在 /usr/local/src 文件夹下使用命令从官网下载rpm包
wget \ https://cdn.mysql.com/archives/mysql-5.7/mysql-community-client-5.7.32-1.el7.x86_64.rpm \ https://cdn.mysql.com/archives/mysql-5.7/mysql-community-common-5.7.32-1.el7.x86_64.rpm \ https://cdn.mysql.com/archives/mysql-5.7/mysql-community-libs-5.7.32-1.el7.x86_64.rpm \ https://cdn.mysql.com/archives/mysql-5.7/mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm \ https://cdn.mysql.com/archives/mysql-5.7/mysql-community-server-5.7.32-1.el7.x86_64.rpm
-
安装下载的安装包
//命令 yum install -y mysql-community-*-5.7.32-1.el7.x86_64.rpm
-
开启服务器查看默认密码
# 开启MySQL服务器 systemctl start mysqld # 查看默认生成的密码 cat /var/log/mysqld.log | grep password
-
使用以上密码登录Mysql
mysql -u root -p
mysql登录完整格式: mysql -u user -h IPaddress -p
-
设置mysql远程登陆
use `mysql`; # 注意将密码替换掉 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '您的密码' WITH GRANT OPTION; #刷新 FLUSH PRIVILEGES;
以上 % 表明设置成功,默认情况是只允许本地localhost登陆的
-
2. 踩坑记录
2.1 设置远程登录以后,仍然无法访问!
错误信息:
2003 - cant connect ro mysql server on xxx (10060 unknown error)
-
解决思路
-
检查端口3306状态
//远程连接测试 telnet 目的IP地址 3306 如果3306不同但是其他例如22端口正常,则说明本机网络设置没有问题
-
问题:windows终端提示telnet命令无效!
- 解决方案:控制面板 >>>> 程序 >>>>> 启用或关闭windows功能 >>>>> 勾选Telnet客户端选项即可开启
-
检查端口(我的问题就出在这里)
1)netstat -ntpl |grep 3306 tcp 0 0 :::3306 :::* LISTEN - 2)netstat -ntpl |grep 22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - 可以看出22端口监听所有地址,而3306只监听本机地址(绑定了到了本地),所以远程无法访问。 对于端口只允许本机访问,有两个地方启用,一个是防火墙启用3306,一个就是mysql配置绑定本机地址。
-
-
检查防火墙
//查看防火墙状态 firewall-cmd --state //如果是防火墙的问题,则打开防火墙端口3306 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload #重启firewall firewall-cmd --list-ports #查看已经开放的端口
-
mysql配置文件检测
检查my.cnf的配置,bind-address=addr可以配置绑定ip地址。 不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。 #ps -aux | grep mysql 查看进程ID是3340 #ll /proc/3340 查看进程程序情况,找配置文件或者#which mysql 找程序路径
-
检查ECS服务器安全组配置规则(我的问题所在,如果项目端口打不开也可以使用该方法)
-
3. Mysql一些配置问题
3.1 查找my.cnf文件
mysql --help | grep my.cnf //看my.cnf配置位置的读取顺序
find / -name my.conf
3.2 数据库数据乱码问题
-
进入mysql
//执行编码显示 show variables like 'character%' 输出如下 mysql> show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 (默认为latin1,将其修改为utf-8) | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 (默认为latin1,将其修改为utf-8) | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
-
修改方法
-
方法一:对本次进行修改,重启后失效(不推荐)
首先进入mysql,然后在mysql下执行如下语句: SET character_set_database = utf8; SET character_set_server = utf8;
-
方法二:改my.cnf文件
[client] default-character-set=utf8 //添加该语句 [mysqld] character_set_server=utf8 //也可以按上面方式写,但有可能导致mysql无法启动;我的只能这样写 再重启mysql systemctl restart mysqld.service
-
f8 //添加该语句
[mysqld]
character_set_server=utf8 //也可以按上面方式写,但有可能导致mysql无法启动;我的只能这样写
再重启mysql
systemctl restart mysqld.service
```