最近搞了一台阿里雲服務器,裝上mysql之后,發現外部遠程連接mysql居然被拒絕了。新裝的mysql,並沒有要求設置密碼,所以無法正常登陸mysql。
首先我強調一下,阿里雲上的安全組設置中3306端口我已經釋放,並且linux上的3306端口也已經放開了。端口的原因,已經排除。
主要是不知道mysql的初始密碼,好像是一個隨機的字符串,我們也不可能去記這個對吧,當然你也記也記不住。好了,說了這么多廢話,我來說我的解決辦法吧。
第一步: 因為我們不知道mysql的初始密碼,所以首先改密碼
(1)首先找到mysql的配置文件my.cnf 一般在 /etc/my.cnf
(2)cd進 /etc 直接 vim my.cnf 編輯他
(3)在【mysqld】標簽下或者文件最下面添加一句skip-grant-tables 即可 (注意,筆者親測,放在最后面沒有生效,放在mysqld標簽后面成功)
(4) esc退出編輯,然后輸入 :wq保存退出 ,然后重啟服務器 service mysqld restart 讓修改生效
(5)mysql -u root 就可以直接進入數據庫了
(6)然后是修改密碼,最好設置密碼復雜點,建議:大寫字母+小寫字母+符號。否則后面mysql會報錯讓你改到符合mysql的安全策略,或者也可以修改mysql安全策略
mysql> USE mysql;
mysql> update mysql.user set authentication_string=password('新密碼') where user='root';
mysql> flush privileges ;
mysql> quit
(7)改完密碼,再將配置文件改回來,就把添加的那句刪掉就好了,然后再次重啟服務器service mysqld restart
(8)然后就可以使用 mysql -uroot -p輸入你的新密碼進入啦
第二步,授權
(1)授權主機訪問:MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
(2)刷新權限:MySQL>FLUSH PRIVILEGES;
(3)退出:MySQL>EXIT;
最后你再重新連接,就可以了