因爲工做須要,常常統計各種信息,因而有了開發部署一套企業信息管理系統的需求。考慮到只是本部門的須要,且有人力資源支持開發,因此由咱們本身開發。硬件使用員工淘汰的舊硬件,軟件計劃採用 LAMP 組合,其餘須要開發的部分,也由咱們本身完成。簡單說來,不花一分錢,就要完成這項工做。mysql
操做系統採用 CentOS-7.4,MySQL 選用配套的 mariadb-5.5.56。我本身其實也是個新手,沒有幹過這項工做,因此過年期間也加班加點,爭取年後能在單位的機器上當即部署使用。如今,記下這個過程,以備不時之需。sql
CentOS 7 的安裝再也不詳述,選擇最小安裝便可,剩下的軟件都可以在操做系統安裝後再安裝。數據庫
MySQL 之因此選擇 mariadb 而不是原生 MySQL 是由於在咱們的業務範圍內,mariadb 徹底能知足需求,且是CentOS 7 自帶的,應該解決了很多兼容性問題。從百度百科咱們知道,MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可。MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。基於以上緣由,咱們選擇了 mariadb。安全
安裝 mariadb服務器
# yum install -y mariadb mariadb-server # systemctl list-unit-files | grep mariadb mariadb.service disabled # systemctl enable mariadb.service # systemctl start mariadb.service
必須擁有 root 權限才能安裝,且安裝後要啓用且啓動 mariadb.service。網絡
更該密碼測試
$ mysql MariaDB [(none)]> set password = password('coder'); ERROR 1133 (42000): Can't find any matching row in the user table MariaDB [(none)]> flush privileges; ERROR 1227 (42000): Access denied; you need (at least one of) the RELOAD privilege(s) for this operation # mysql MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> set password = password('coder'); Query OK, 0 rows affected (0.00 sec) $ mysql MariaDB [(none)]> set password = password('coder'); ERROR 1133 (42000): Can't find any matching row in the user table $ mysql -u root -p Enter password: MariaDB [(none)]>
安裝完 mariadb 後,退出 root 權限,此時啓動 mysql,能正常啓動,可是沒法設置密碼。查 mysql 錯 誤代碼說明裏,查到 mysql 錯誤 1133 是數據庫用戶名不存在 ;查網上解決辦法,好多提示執行 FLUSH PRIVILEGES; 命令,但仍然沒法成功執行。但從 root 用戶就能夠正確執行 FLUSH PRIVILEGES; 和 set
password 命令,後來查系統數據庫的表,用戶權限表中,只有 root 用戶,沒有 Linux 系統中的普通用 戶,因此普通用戶鏈接數據庫後,也沒法執行有影響的命令。this
若是平常應用中,須要從 Linux 系統的普通用戶鏈接數據庫,則須要使用 mysql -u root -p 命令並輸入設 置的數據庫 root 用戶密碼,不是 Linux 系統 root 用戶密碼,並且,必須使用 -p 選項,不然會提示:編碼
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)操作系統
此時,仍然沒法進入數據庫。
數據庫安全設置
MariaDB 推薦全部生產環境的 MariaDB 服務器都運行此腳本。
# mysql_secure_installation
(1). 設置密碼,因爲前面已經設置過,此處不須要更改;
(2). 刪除數據庫的匿名帳戶,正是由於有此匿名帳戶,咱們能夠以空身份登錄(僅輸入 mysql ),但無 法完成其餘大部分操做。此處應該刪除該匿名帳戶;
(3). 禁止 root 用戶從網絡登錄, root 用戶僅被容許從 'localhost' 登錄,此處應該選擇 Yes ;
(4). 刪除 test 數據庫,該數據庫僅用於測試,應該在轉入生產環境前刪除,此處選擇刪除;
(5). 從新載入權限表,以使所作的更改生效,此處選擇 yes;
數據庫字符集設置
因爲數據庫中須要輸入輸出中文信息,因此須要作支持中文設置。
MariaDB [(none)]> show variables like 'char%';
默認狀況下,該命令輸出的各類字符集多數是 latin1,不支持中文,此時若是建立數據庫、表,並寫入中 文信息。插入操做能成功執行,可是查詢時,涉及中文信息的會以「??? 「的方式顯示,徹底沒法閱讀。
更改辦法:
In file /etc/my.cnf.d/client.cnf, after the '[client]' zone, add the next line as follows:
[client]
default-character-set=utf8
in file /etc/my.cnf.d/server.cnf, after the '[server]' zone, add the next line as follows:
[server]
character-set-server=utf8
Restart the mariadb.service
systemctl restart mariadb.service
作完這些準備工做,就能夠在 mariadb 數據庫中使用中文了。若是採用遠程鏈接,必須保證遠程鏈接工 具使用的編碼和數據庫一致。
建立數據庫表
MariaDB [(none)]> create database worker_info; MariaDB [(none)]> use worker_info; MariaDB [(none)]> create table wid_name ( wid int unsigned not null, name varchar(10) not null, primary key (wid) );
執行 insert 命令插入數據
MariaDB [(worker_info)]> insert into wid_name (wid, name ) values ( 2018101001, '今天' );
數據庫的安裝基本到此結束。