前兩天在阿里買了個ECS雲服務器,CentOS7.3的。安裝mysql5.7.19 官網最新版的 全名mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz,二進制版本。
5.7.19較之前的版本有了很大的變化:
1、從MySQL 5.7.18開始,my-default.cnf不再包含在安裝包中。
2、解壓后包根目錄里沒有data,所以解壓之后先新建data,一個存儲mysql所有數據庫和表的文件夾。初始化的目的也是先初始化它,開始時為空。
3、5.7.6 版本開始,MySQL 初始化使用 mysqld --initialize 命令,不再使用 mysql_install_db 命令 由於缺少my.cnf配置文件 沒有默認的datadir和basedir
初始化時,請用
#./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
盡量使用mysql默認的安裝位置 /usr/local 路徑下。
分析:1、開始以為是防火牆的問題,用命令
# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
發現是dead 死的,排除了防火牆屏蔽3306端口
2、為mysql添加遠程權限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; //格式:GRANT ALL PRIVILEGES ON *.* TO '登錄名'@'登錄ip,%為任意地址' IDENTIFIED BY '登錄密碼' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; //刷新策略
添加后依然不行,但這是必不可少的
檢驗是否成功設置
mysql> use mysql; mysql> select user,host from user; +---------------+-----------+ | user | host | +---------------+-----------+ | root | % | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +---------------+-----------+ 4 rows in set (0.00 sec)
發現設置好了
3、是不是mysql某個配置文件 .cnf的文件 比如my.cnf或者其他的文件把bind-address設成了本地,顧名思義:綁定了地址
找了一圈沒找到,擔心還會出問題,故意在 /etc/my.cnf 里加了一句
bind-address = 0.0.0.0
如果找到
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 #這里默認監聽本地localhost
那就注了就是了
4、然后依然不行,又搜了一下發現skip-networking是指定mysql本地運行的,跳過了TCP/IP
沒在配置里找到,也沒用這個方式啟動
5、最后。哈 終於找到了問題的關鍵
阿里雲官方的限制,關閉了3306端口
在個人中心進入自己買的服務器,點擊最右側的配置規則,出現下圖,前兩個規則是我自己加的。對了貌似8080端口也是關閉的,先選中入方向,點擊添加安全組規則,按照下圖的第一列添加信息。
添加后刷新下,然后再用本地重連發現OK了。