連上去那一刻,心態真是起飛了🤓html
下面筆者總結安裝Mysql開始所遇到的坑(Ps 筆者是阿里雲的Centos6.8):mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)sql
出現相似上面問題的,就是說 你登陸的帳號是須要密碼的,意思是沒有使用密碼的root@localhost 拒絕訪問數據庫
先走一遍安裝流程:安全
1 . 進入系統 使用 su 命令 進入 root 權限。服務器
2 . 使用 rpm -qa mysql 查看是否有存在的老的版本的mysqltcp
3 . 若是存在舊版本的mysql 使用 yum remove mysql 命令刪除函數
4 . 使用 yum install mysql 命令安裝客戶端數據庫阿里雲
5 . 使用 yum install mysql-server 命令安裝服務端數據庫加密
6 . 使用 /etc/init.d/mysqld start 來啓動數據庫
7 . 使用 mysql -u root -p 鏈接數據庫(由於第一次鏈接使用,因此沒有密碼 因此能夠直接按回車進入)
至此 在Linux下的 Mysql 也算安裝完成了。
下面來爲root用戶設置密碼:
我使用的是
1. mysqladmin -u root -p password newpassword 這個命令,不過有弊端,這個方法在設置新密碼後會提示輸入舊的密碼才能設置成功,第一次使用數據庫沒有密碼的 可使用這個方法,提示輸入舊密碼時直接回車就OK,除此以外 並不適用於忘記已存在的舊密碼的用戶。
2. 因爲全部的用戶信息都是存放在mysql庫(默認庫)的user表中,因此只要root用戶登陸到了Mysql的服務器中,適用UPDATE語句就能夠直接修改本身的密碼了。
UPDATE語句的語法格式是:
1 UPDATE mysql.user set Password=PASSWORD('new_password') where User='username' and Host='hostname'; 2 例如 3 UPDATE mysql.user set Password=PASSWORD('123456') where User='root' and Host='localhost';
記得執行完UPDATE語句後,使用 FLUSH PRIVILEGES從新加載權限表(update語句不能刷新權限表,因此必定要使用FLUSH PRIVILEGES語句刷新權限表,不然修改後的密碼不能生效)
3. 使用SET語句修改root密碼
當用戶登陸到Mysql服務器以後,還能夠經過SET語句修改密碼,語法格式以下:
SET PASSWORD=PASSWORD('new_password');
要注意的是 SET 語句沒有對密碼的加密功能,因此使用PASSWORD()函數進行加密,且密碼須要使用單引號括起來。
上面三種方法應對都是常規狀況,方法1區別於方法2/3,方法1不須要登陸到Mysql服務器,方法2/3都是在Mysql服務器對用戶信息表操做完成密碼的更改。
不過每每咱們遇到的是一些比較極端的狀況,當咱們root用戶的密碼丟失了怎麼辦呢,這時咱們並不能登陸到Mysql服務器,也不知道舊密碼;這時Mysql提供了對應的應急處理機制,經過特殊的方法登陸到 Mysql服務器:
1. 中止 Mysql 服務
使用 service mysql stop 命令中止
2. 使用 mysqld_safe --skip-grant-tables 命令,能夠中止Mysql的權限判斷,也就是說能夠任何用戶直接訪問數據庫,而且能夠啓東Mysql服務。
3. 執行完第二條命令後,打開新的終端,此時即可以直接登陸Mysql服務,登陸以後的密碼設置操做參考👆。
下面講講端口和防火牆的問題
首先要確認的是3306端口是否是對外開放了。Mysql默認狀態是不開放對外訪問的,因此這應該是大多數問題所在。
***開啓3306端口及經常使用的其它端口***
查看是否有這個文件/etc/sysconfig/iptables,若是沒有
iptables -P OUTPUT ACCEPT
service iptables save 進行保存,默認就保存到了/etc/sysconfig目錄下的iptables文件中
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #容許3306數據庫端口經過防火牆
service iptables save
cat /etc/sysconfig/iptables有3306這條信息
service iptables restart就ok咯
Ps: 在Mysql服務下 使用show global variables like 'port' 查看端口號,默認是3306
經過編輯 /etc/my.cnf 使用 port=newport 來修改新的端口。
常常碰到的就是這些問題了,若是上述全部的問題都嘗試過了,仍是沒有解決,那麼能夠考慮是否是運營商的安全組的問題。
筆者最後的問題就是出在 阿里雲-安全組上
筆者 設置了遠程主機鏈接的權限 設置了3306經過防火牆的限制 ,能夠navicat仍是鏈接不上Mysql服務,後來 去看了下阿里雲的安全組,簡單瞭解下設置了。
bingou 完美解決,尼瑪的😭,害我折騰了一上午