因爲數據庫一直用的是 阿里雲的 RDS,公司的網訪問阿里雲又是龜速,因此用了一會仍是決定在本地搭建一臺 mysql 服務器。mysql
mysql 被 oracle 收購以後,下載 mysql 就須要 oracle 帳號了,社區版變成了兩種 mysql-community-server 和 mariadb,mariadb 聽說是 mysql 社區爲了防止 oracle 再也不開源 mysql 而建的一個分支,徹底兼容 mysql。redis
yum 上面通常都是這個 mariadb,mysql-community-server 則須要從 mysql 的官網下載。sql
yum install mariadb-server mariadb數據庫
vim /etc/my.cof vim
添加默認編碼:緩存
[mysql]安全
default-character-set = utf8bash
啓動 mariadb:服務器
systemctl restart mariadb 架構
官網下載 mysql-community-server 的 rpm,默認 yum 源是沒有 mysql 社區版的,須要手動添加:
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
添加默認編碼:
vim /etc/my.cof
[mysql]
default-character-set = utf8
啓動 mariadb:
systemctl restart mysqld
剛安裝的 mysql 提供了一個無密碼的 root 用戶,須要設置密碼:
mysqladmin -u root password "123456";
建立數據庫:
mysqladmin -u root -p create test_database;
這樣建立了一個 test_database 的數據庫;
添加用戶:
mysql -u root -p
root 用戶鏈接數據庫,切換到 mysql 數據庫:
mysql> use mysql;
而後將新建的用戶插入到 user 表中便可:
insert into user (host, user, password) values ('test1', 'guest', PASSWORD('111111'));
這裏注意密碼須要用自帶的 PASSWORD() 函數加密,這樣在數據庫中顯示的就爲密文。
user 表中還有許多其餘列,是關於用戶權限的,可自行 update;
這樣一個簡單默認配置的 mysql 數據庫就搭建好了,優化纔是重點,也是發揮數據庫這個強大性能怪獸的鑰匙,一個好的數據庫架構徹底能夠接起一個系統很大一部分的業務邏輯,並且處理速度飛快。
數據庫給個人感受就是放在硬盤中的內存,堆棧思想不少,數據交給 mysql,緩存交給 redis,你的系統就不會慢。
Mysql 爲了安全性,在默認狀況下用戶只能容許本地登陸,遠程登陸須要添加權限,redis 曾經就出現過由於免密碼遠程登陸獲取 root 權限的漏洞。
[root@master ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION; # ALL PRIVILEGES 爲所有權限(SELECT、INSERT、UPDATE、DELETE) *.* 匹配全部庫,'root'@'%' root 對應公網,只容許特定 IP 可 'root'@'192.168.1.1' MariaDB [(none)]> FLUSH PRIVILEGES; # 重載受權表;
刪除用戶受權,須要使用REVOKE命令,具體命令格式爲: REVOKE privileges ON 數據庫[.表名] FROM user-name; 具體實例,先在本機登陸mysql: mysql -u root -p"youpassword" 進行受權操做: GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword"; 再進行刪除受權操做: REVOKE all on TEST-DB from test-user; ****注:該操做只是清除了用戶對於TEST-DB的相關受權權限,可是這個「test-user」這個用戶仍是存在。 最後從用戶表內清除用戶: DELETE FROM user WHERE user="test-user"; 重載受權表: FLUSH PRIVILEGES; 退出mysql數據庫: exit
MYSQL權限詳細分類: 全局管理權限: FILE: 在MySQL服務器上讀寫文件。 PROCESS: 顯示或殺死屬於其它用戶的服務線程。 RELOAD: 重載訪問控制表,刷新日誌等。 SHUTDOWN: 關閉MySQL服務。 數據庫/數據表/數據列權限: ALTER: 修改已存在的數據表(例如增長/刪除列)和索引。 CREATE: 創建新的數據庫或數據表。 DELETE: 刪除表的記錄。 DROP: 刪除數據表或數據庫。 INDEX: 創建或刪除索引。 INSERT: 增長表的記錄。 SELECT: 顯示/搜索表的記錄。 UPDATE: 修改表中已存在的記錄。 特別的權限: ALL: 容許作任何事(和root同樣)。 USAGE: 只容許登陸--其它什麼也不容許作。