mysql數據庫在安裝以後,有一些內置的庫(test庫)、用戶(如root@localhost.localdomain)是不須要的,並且在Linux系統上,yum安裝的mysql是默認無root密碼的,這些都給數據庫服務器的安全帶來了隱患。
這篇文章就是介紹如何進行初始優化,把這些隱患消除掉,以及在root用戶被禁止遠程登錄的狀況下建立普通用戶用於局域網管理。html
咱們的操做環境是64位windows 7系統上面安裝的mysql 5.5mysql
關於MySQL數據的安裝,能夠參考:MySQL安裝(Windows 7)sql
一、刪除test庫
1 C:\Users\Administrator>mysql -uroot -p123456 2 3 4 mysql> show databases; 5 6 mysql> drop database test;
二、刪除不使用的用戶
在 Linux 系統上 yum 安裝 mysql 時,直接使用 mysql 命令便可鏈接到 mysql,這是由於 mysql 的內置用戶(用戶名爲空並且也沒有密碼)致使的。甚至 root 用戶也沒有密碼,即便root用戶不能進行遠程鏈接,這也是不安全的。shell
1 mysql> select user, host, password from mysql.user; 2 +------+-----------------------+----------+ 3 | user | host | password | 4 +------+-----------------------+----------+ 5 | root | localhost | | 6 | root | localhost.localdomain | | 7 | root | 127.0.0.1 | | 8 | | localhost | | 9 | | localhost.localdomain | | 10 +------+-----------------------+----------+ 11 5 rows in set (0.00 sec)
首先,把用戶名爲空的用戶刪除數據庫
mysql> delete from mysql.user where user = '';
而後,把root@localhost.localdomain用戶刪除windows
mysql> delete from mysql.user where host = 'localhost.localdomain';
而後,爲 root 用戶設置密碼安全
mysql> update mysql.user set password = password('123456');
也能夠在命令行使用 mysqladmin 命令設置密碼:mysqladmin -u root password '123456'服務器
查看一下app
1 mysql> select user, host, password from mysql.user; 2 +------+-----------+-------------------------------------------+ 3 | user | host | password | 4 +------+-----------+-------------------------------------------+ 5 | root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 6 | root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 7 +------+-----------+-------------------------------------------+ 8 2 rows in set (0.00 sec)
最後,刷新一下權限dom
mysql> flush privileges;
三、添加局域網管理用戶
由於 root 已經被禁止了遠程鏈接,即便是局域網主機,也不能鏈接。可是咱們有須要從遠程鏈接到mysql服務器進行管理。此時能夠:
建立用戶,容許從局域網主機鏈接,能夠授予全部庫、全部表的全部權限,也能夠只授予某些庫、某些表的某些權限。
咱們一般的解決方案是:一個擁有全部權限的管理員用戶(用戶名密碼只能幾個核心管理者擁有,甚至能夠把host設置在很小的範圍內),管理不一樣庫的多個普通用戶(不一樣系統的管理者擁有,彼此儘可能無交集)
下面咱們看一下建立用戶的語法:建立system用戶,授予全部庫、全部表的全部權限,容許局域網192.168.0網段主機鏈接,密碼是123456
1 mysql> GRANT ALL ON *.* TO 'system'@'192.168.0.%' IDENTIFIED BY '123456'; 2 mysql> GRANT ALL ON *.* TO 'system'@'localhost' IDENTIFIED BY '123456'; 3 mysql> GRANT ALL ON *.* TO 'system'@'127.0.0.1' IDENTIFIED BY '123456'; 4 5 mysql> select user, host, password from mysql.user; 6 +--------+--------------+-------------------------------------------+ 7 | user | host | password | 8 +--------+--------------+-------------------------------------------+ 9 | root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 10 | root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 11 | system | 192.168.0.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 12 | system | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 13 | system | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 14 +--------+--------------+-------------------------------------------+ 15 5 rows in set (0.00 sec) 16 17 mysql> flush privileges;
從 192.168.0.10 主機進行遠程鏈接
C:\Users\Administrator>mysql -usystem -p123456 -h 192.168.0.105
能夠成功鏈接了
四、mysql命令主要選項
-?, --help | 顯示幫助 |
-D, --database=name | 指定使用的數據庫 |
--default-character-set=name | 設置客戶端鏈接編碼 mysql -uroot -p123456 --default-character-set=gbk |
-e, --execute=name | 執行語句後退出,這個選項在編寫shell腳本時頗有用 mysql -uroot -p123456 --default-character-set=gbk -e "select * from test.t_user;" |
-h, --host=name | 鏈接主機名。默認loadlhost。在鏈接遠程數據庫時使用 |
-p, --password[=name] | 密碼,若是未指定這個選項,會在mysql命令行提示輸入 |
-P, --port=# | 服務端口,默認3306 |
-S, --socket=name | 鏈接使用的socket文件 |
-u, --user=name | 鏈接使用的用戶 |
-V, --version | 輸出版本信息 |
--connect-timeout=# | 鏈接超時時長,單位爲秒 |
你好你好你好你好你好
你好你好你好
五、help命令
MySQL 的官方文檔很是全面,即便您沒有 MySQL 相關經驗,只要有必定的 SQL、DOS/Linux 命令行基礎,就能夠根據官方文檔學習 MySQL 的核心命令和 SQL 語法了。
在 mysql 控制檯裏面,可使用 help 來查看幫助,如:查看 create 的幫助可使用 help create 語句、查看刪除表的幫助可使用 help drop table 語句......