1. 背景 Ubuntu下的mysql安裝教程很多,但是有不少講得過於簡單,沒有考慮到安全問題。比如說,一些教程里,只設置一個root用戶,並且對外網公開,一來容易被破解密碼(用戶名固定,破解難度自然降了一大截,而且總有很多用戶設置的密碼不算複雜),二來,一旦密碼被破解,所有使用該資料庫的網站都遭殃 ...
1. 背景
Ubuntu下的mysql安裝教程很多,但是有不少講得過於簡單,沒有考慮到安全問題。比如說,一些教程里,只設置一個root用戶,並且對外網公開,一來容易被破解密碼(用戶名固定,破解難度自然降了一大截,而且總有很多用戶設置的密碼不算複雜),二來,一旦密碼被破解,所有使用該資料庫的網站都遭殃。
既安全又容易的做法是,安裝完mysql之後,立馬創建小號,給小號只分配特定db上的許可權。以後,網站連接、自己遠程都通過小號進行。
2. 實戰
2.1 安裝mysql,一條語句就夠了,在偽GUI里按照提示設置root密碼。
sudo apt-get install mysql-server
2.2 修改mysql配置文件,使得Mysql監聽來自外網的請求。註,只是監聽請求,不代表現在任何賬號都可以從外網登錄,因為不是所有賬號都有從外網訪問的許可權的。
sudo vim /etc/mysql/my.cnf
# 註釋掉這行:bind-address = 127.0.0.1
2.3 用root賬號登錄mysql。輸入密碼,登錄成功後,進入mysql控制台,在mysql控制臺下,命令都以“mysql>”開頭,接下來的步驟都是在mysql控制臺中進行的。
mysql -u root -p
2.3 創建小號。例子里,用戶名user1,密碼user1pwd。註意,['user1'@'%']里的%表示,任意ip地址的客戶端都可以使用user1登錄。
mysql> create user 'user1'@'%' identified by 'user1pwd'
mysql> flush privileges; # 使操作立即生效
2.4 給小號分配許可權。註意,[web1_db.*] 表示小號擁有web1_db資料庫的全部許可權。
mysql> grant all privileges on web1_db.* to 'user1'@'%' identified by 'user1pwd';
mysql> flush privileges; # 使操作立即生效
2.5 最後,重啟mysql,嘗試一下用小號遠程登錄吧~
sduo service mysql restart