Linux 下 MySQL(Mariadb) 安裝與使用

因爲工做須要,常常統計各種信息,因而有了開發部署一套企業信息管理系統的需求。考慮到只是本部門的須要,且有人力資源支持開發,因此由咱們本身開發。硬件使用員工淘汰的舊硬件,軟件計劃採用 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。安全

  1. 安裝 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。網絡

  2. 更該密碼測試

    $ 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)操作系統

    此時,仍然沒法進入數據庫。

  3. 數據庫安全設置
    MariaDB 推薦全部生產環境的 MariaDB 服務器都運行此腳本。

    # mysql_secure_installation

    (1). 設置密碼,因爲前面已經設置過,此處不須要更改;
    (2). 刪除數據庫的匿名帳戶,正是由於有此匿名帳戶,咱們能夠以空身份登錄(僅輸入 mysql ),但無 法完成其餘大部分操做。此處應該刪除該匿名帳戶;
    (3). 禁止 root 用戶從網絡登錄, root 用戶僅被容許從 'localhost' 登錄,此處應該選擇 Yes ;
    (4). 刪除 test 數據庫,該數據庫僅用於測試,應該在轉入生產環境前刪除,此處選擇刪除;
    (5). 從新載入權限表,以使所作的更改生效,此處選擇 yes;

  4. 數據庫字符集設置
    因爲數據庫中須要輸入輸出中文信息,因此須要作支持中文設置。

    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 數據庫中使用中文了。若是採用遠程鏈接,必須保證遠程鏈接工 具使用的編碼和數據庫一致。

  5. 建立數據庫表

    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) );
  6. 執行 insert 命令插入數據

    MariaDB [(worker_info)]>  insert into wid_name (wid, name ) values ( 2018101001, '今天' );

數據庫的安裝基本到此結束。

相關文章
相關標籤/搜索