nginx詳解反向代理、負載均衡、LNMP架構上線動態網站

nginx介紹

 

Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音爲「engine X」,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。Nginx是由俄羅斯人 Igor Sysoev爲俄羅斯訪問量第二的 Rambler.ru站點開發的,它已經在該站點運行超過兩年半了。Igor Sysoev在創建的項目時,使用基於BSD許可。javascript

 

nginx和apache區別

 

Nginxphp

  1. 輕量級,採用 C 進行編寫,一樣的 web 服務,會佔用更少的內存及資源
  2. 抗併發,nginx 以 epoll and kqueue 做爲開發模型,處理請求是異步非阻塞的,負載能力比 apache 高不少,而 apache 則是阻塞型的。在高併發下 nginx 能保持低資源低消耗高性能 ,而 apache 在 PHP 處理慢或者前端壓力很大的狀況下,很容易出現進程數飆升,從而拒絕服務的現象。
  3. nginx 處理靜態文件好,靜態處理性能比 apache 高三倍以上
  4. nginx 的設計高度模塊化,編寫模塊相對簡單
  5. nginx 配置簡潔,正則配置讓不少事情變得簡單,並且改完配置能使用 -t 測試配置有沒有問題,apache 配置複雜 ,重啓的時候發現配置出錯了,會很崩潰
  6. nginx 做爲負載均衡服務器,支持 7 層負載均衡
  7. nginx 自己就是一個反向代理服務器,並且能夠做爲很是優秀的郵件代理服務器
  8. 啓動特別容易, 而且幾乎能夠作到 7*24 不間斷運行,即便運行數個月也不須要從新啓動,還可以不間斷服務的狀況下進行軟件版本的升級
  9. 社區活躍,各類高性能模塊出品迅速

Apache

  1. apache 的 rewrite 比 nginx 強大,在 rewrite 頻繁的狀況下,用 apache
  2. apache 發展到如今,模塊超多,基本想到的均可以找到
  3. apache 更爲成熟,少 bug ,nginx 的 bug 相對較多
  4. apache 超穩定
  5. apache 對 PHP 支持比較簡單,nginx 須要配合其餘後端用
  6. apache 在處理動態請求有優點,nginx 在這方面是雞肋,通常動態請求要 apache 去作,nginx 適合靜態和反向。

apache 仍然是目前的主流,擁有豐富的特性,成熟的技術和開發社區css

 

總結

二者最核心的區別在於 apache 是同步多進程模型,一個鏈接對應一個進程,而 nginx 是異步的,多個鏈接(萬級別)能夠對應一個進程html

通常來講,須要性能的 web 服務,用 nginx 。若是不須要性能只求穩定,更考慮 apache ,後者的各類功能模塊實現得比前者,例如 ssl 的模塊就比前者好,可配置項多。epoll(freebsd 上是 kqueue ) 網絡 IO 模型是 nginx 處理性能高的根本理由,但並非全部的狀況下都是 epoll 大獲全勝的,若是自己提供靜態服務的就只有寥寥幾個文件,apache 的 select 模型或許比 epoll 更高性能。固然,這只是根據網絡 IO 模型的原理做的一個假設,真正的應用仍是須要實測了再說的。前端

更爲通用的方案是,前端 nginx 抗併發,後端 apache 集羣,配合起來會更好。java

 

集羣

 

簡單來講,集羣就是指一組相互獨立的計算機,利用高速通訊網絡組成的一個較大的計算機服務系統,每一個集羣節點都是運行各自服務的獨立服務器。這些服務器之間能夠彼此通訊,協同向用戶提供應用程序、系統資源和數據,並以單一系統的模式加以管理。當用戶客戶機請求集羣系統時,集羣給用戶的感受就是一個單一的服務器,而實際上用戶請求的是一組集羣服務器。node

集羣主要包括幾大特色:高性能、價格有效性、可伸縮性、高可用性、透明性、可管理性和可編程性。mysql

 

負載均衡集羣

 

常見的負載均衡的架構包括有負載均衡集羣、高可用性集羣、高性能計算集羣等等。這裏着重介紹負載均衡集羣,其餘的集羣方式不作介紹。linux

負載均衡集羣爲企業提供了更爲實用、性價比更高的系統架構解決方案。負載集羣能夠把不少客戶集中的訪問請求負載壓力盡量平均分攤到計算機集羣中處理。客戶訪問請求負載均衡一般包含應用程序處理負載均衡和網絡流量負載。這樣的系統很是適合使用同一組應用程序爲大量用戶提供服務的模式,每一個節點均可以承當必定的訪問請求負載壓力,而且能夠實現訪問請求在各節點之間動態分配,以實現負載均衡。nginx

負載均衡集羣運行時,通常是經過一個或多個前端負載均衡器將客戶訪問請求分發到後端的一組服務器上,從而達到整個系統的高性能和高可用性。通常高可用性集羣和負載均衡集羣使用相似的技術,或同事具備高可用與負載均衡的特色。負載均衡的做用爲:分擔用戶訪問及數據流量、保持業務的連續性、應用於Web業務及數據庫從庫等服務器的業務。

 

Nginx負載均衡集羣介紹

 

互聯網企業中常見的開源集羣軟件有:Nginx、LVS、Haproxy、Keepalived等,硬件有F五、Netscaler等。

嚴格地說,Nginx僅僅是做爲Nginx Proxy反向代理使用的,由於反向代理功能表現的效果是負載均衡集羣的效果,因此也叫作Nginx負載均衡。反向代理和負載均衡的區別在於負載均衡一般都是對請求的數據包的轉發(也有可能會改寫數據包)、傳遞,其中DR模式明顯的特徵就是從負載均衡下面的節點服務器來看,接收到的請求仍是來自負載均衡器的客戶端的真實用戶。而反向代理,反向代理接收訪問用戶的請求後,會代理用戶從新發起請求代理下的節點服務器,最後把數據返回給客戶端用戶。在節點服務器來看,訪問節點服務器的客戶端用戶是反向代理服務器,而不是真實的網站訪問用戶。

Nginx負載均衡的模塊主要有兩個,ngx_http_proxy_module,ngx_http_upstream_module。編譯的時候須要把這兩個模塊編譯進去。

 

nginx安裝

 

下載nginx須要使用到epel源

[epel]
name=epel
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/

 

配置好yum源以後就能夠進行下載了

[root@ken ~]# yum install nginx -y

 

nginx配置文件詳解

 

複製代碼
#nginx進程,通常設置爲和cpu核數同樣
worker_processes 4;                        
#錯誤日誌存放目錄 
error_log  /data1/logs/error.log  crit;  
#運行用戶,默認便是nginx,可不設置
user nginx       
#進程pid存放位置
pid        /application/nginx/nginx.pid;        

#Specifies the value for maximum file descriptors that can be opened by this process. 
#最大文件打開數(鏈接),可設置爲系統優化後的ulimit -HSn的結果
worker_rlimit_nofile 51200;

cpu親和力配置,讓不一樣的進程使用不一樣的cpu

worker_cpu_affinity 0001 0010 0100 1000 0001 00100100 1000;

#工做模式及鏈接數上限
events 
{
  use epoll;       #epoll是多路複用IO(I/O Multiplexing)中的一種方式,可是僅用於linux2.6以上內核,能夠大大提升nginx的性能
  worker_connections 1024;  #;單個後臺worker process進程的最大併發連接數
}
###################################################
http 
{

include mime.types; #文件擴展名與類型映射表
default_type application/octet-stream; #默認文件類型




  #隱藏響應header和錯誤通知中的版本號
  server_tokens off;
  #開啓高效傳輸模式   
  sendfile on;

-------------------------------------------------------------------------------------------------
  #激活tcp_nopush參數能夠容許把httpresponse header和文件的開始放在一個文件裏發佈,
  積極的做用是減小網絡報文段的數量
  tcp_nopush     on;
  #激活tcp_nodelay,內核會等待將更多的字節組成一個數據包,從而提升I/O性能
  tcp_nodelay on;
#鏈接超時時間,單位是秒
  keepalive_timeout 60;

  #開啓gzip壓縮功能
    gzip on;
 #設置容許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取。默認值是0,表示無論頁面多大都進行壓縮。建議設置成大於1K。若是小於1K可能會越壓越大。
  gzip_min_length  1k;

#壓縮緩衝區大小。表示申請4個單位爲16K的內存做爲壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。
  gzip_buffers     4 16k;

#壓縮版本(默認1.1,前端爲squid2.5時使用1.0)用於設置識別HTTP協議版本,默認是1.1,目前大部分瀏覽器已經支持GZIP解壓,使用默認便可。
  gzip_http_version 1.0;

#壓縮比率。用來指定GZIP壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理最慢,也比較消耗cpu資源。
  gzip_comp_level 9;

#用來指定壓縮的類型,「text/html」類型老是會被壓縮
  gzip_types       text/plain application/x-javascript text/css application/xml;
  #vary header支持。該選項可讓前端的緩存服務器緩存通過GZIP壓縮的頁面,例如用

Squid緩存通過Nginx壓縮的數據。

gzip_vary off;
#開啓ssi支持,默認是off
  ssi on;
  ssi_silent_errors on;
#設置日誌模式
    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" $http_x_forwarded_for';

#反向代理負載均衡設定部分

#upstream表示負載服務器池,定義名字爲backend_server的服務器池
upstream backend_server {
    server   10.254.244.20:81 weight=1 max_fails=2 fail_timeout=30s;
    server   10.254.242.40:81 weight=1 max_fails=2 fail_timeout=30s;
    server   10.254.245.19:81 weight=1 max_fails=2 fail_timeout=30s;
    server   10.254.243.39:81 weight=1 max_fails=2 fail_timeout=30s;
  #設置由 fail_timeout 定義的時間段內鏈接該主機的失敗次數,以此來判定 fail_timeout 定義的時間段內該主機是否可用。默認狀況下這個數值設置爲 1。零值的話禁用這個數量的嘗試。

設置在指定時間內鏈接到主機的失敗次數,超過該次數該主機被認爲不可用。

#這裏是在30s內嘗試2次失敗即認爲主機不可用!
  }
###################

#基於域名的虛擬主機
  server
  {

#監聽端口
    listen       80;
    server_name  www.abc.com abc.com;    
    index index.html index.htm index.php;    #首頁排序
    root  /data0/abc;                            #站點根目錄,即網站程序存放目錄 
    error_page 500 502 404 /templates/kumi/phpcms/404.html;   #錯誤頁面
#僞靜態   將www.abc.com/list....html的文件轉發到index.php。。。
#rewrite ^/list-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /index.php?m=content&c=index&a=lists&catid=$1&types=$2&country=$3&language=$4&age=$5&startDate=$6&typeLetter=$7&type=$8&page=$9 last;
#location 標籤,根目錄下的.svn目錄禁止訪問
    location ~ /.svn/ {
     deny all;
    }
            location ~ \.php$   
             {  #符合php擴展名的請求調度到fcgi server  
              fastcgi_pass  127.0.0.1:9000;  #拋給本機的9000端口
              fastcgi_index index.php;    #設定動態首頁
              include fastcgi.conf;
             }
複製代碼

 

nginx實現反向代理

 

1.幾個概念

反向代理:在收到客戶端請求以後,會修目標IP地址和端口

正向代理:在收到客戶端請求以後,會修源IP地址和端口

上游服務器:代理服務器後端的哪些真正給客戶端提供服務的節點,這樣的服務器稱之爲上游服務器

下游服務器:客戶端就是下游節點

2.反向代理指令

複製代碼
模塊:nginx_http_proxy_module
    指令
    proxy_pass:指定上游服務器的ip和端口
    proxy_set_header:指定在從新封裝請求報文的時候,添加一個新的首部


    Syntax:     proxy_pass URL;
    Default:     —
    Context:     location, if in location, limit_except
    例子:proxy_pass http://10.220.5.200:80;


    Syntax:     proxy_set_header field value;
    Default:     proxy_set_header Host $proxy_host;
    Context:     http, server, location
複製代碼

3.反向代理簡單示例

location / {
        proxy_pass http://10.220.5.180;
        proxy_set_header X-Real-IP $remote_addr  
        proxy_set_header Host $proxy_host;
    }

 

反向代理實戰案例

 

1.環境準備

centos7.5

反向代理服務器IP:172.20.10.7/28

web1服務器IP:172.20.10.8/28

web2服務器IP:172.20.10.9/28

2.配置反向代理服務器端

yum安裝nignx須要配置網絡源,複製下面的代碼到你的yum倉庫中

[ken]
name=ken
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/

安裝nginx

[root@ken ~]# yum install nginx -y

配置nginx文件,咱們實現這樣一個效果,靜態文件都被代理到172.20.10.8,動態文件都被調度到172.20.10.9,實現動靜分離。

複製代碼
[root@ken ~]# vim /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
       # include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /var/www/html;
        index index.html index.php;
        # Load configuration files for the default server block.
   location / {
        proxy_pass http://172.20.10.8;
        proxy_set_header host $proxy_host;
        proxy_set_header realip $remote_addr;
        }
        location ~^/.*(\.php)$ {
        proxy_pass http://172.20.10.9;
        proxy_set_header host $proxy_host;
        proxy_set_header realip $remote_addr;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}
    
複製代碼

進行語法檢測

[root@ken ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

檢查沒有問題以後進行重啓

[root@ken ~]# systemctl start nginx

3.配置web服務器端

安裝apache

[root@ken ~]# yum install httpd -y

準備測試文件,172.20.10.8準備靜態文件

[root@ken ~]# echo "this is 172.20.10.8 for static test">/var/www/html/index.html

172.20.10.9須要下載php以便支持動態文件

[root@ken html]# yum install php -y

172.20.10.9準備動態文件,

[root@ken ~]# cd /var/www/html/
[root@ken html]# vim index.php
<?php
phpinfo();
?>

4.web服務器重啓

[root@ken html]# systemctl restart httpd

5.關閉安全服務

[root@ken ~]# iptables -F

6.瀏覽器測試

請求靜態文件測試

靜態文件請求已經成功轉發至172.20.10.8。

測試成功!

請求動態文件測試

動態文件請求已經成功轉發至172.20.10.9.

測試成功!

7.補充

補充一

複製代碼
補充1:
    location以下
        location /admin {
            proxy_pass http://www.ken.com/; 
            proxy_pass http://www.ken.com;    
        }

    請求的url 是http://www.ken.com/admin/a.html

    若是代理方式是 proxy_pass http://www.ken.com/; 那麼去www.ken.com的跟目錄下找a.html,/表明徹底代理。
    若是代理方式是 proxy_pass http://www.ken.com; 那麼去www.ken.com的跟目錄下的admin找a.html
複製代碼

補充二

複製代碼
補充2:
    若是location中使用了模式匹配(正則),那麼,location中的url會直接補充到代理節點的後面.

    此時,上游服務器的的後面不能有任何內容,包括 /

        location ~ \.php$ {
            proxy_pass http://www.ken.com; [正則表達式proxy_pass轉發的地址後面什麼都不能加]       <<< 正確寫法
            proxy_pass http://www.ken.com:80;     <<< 正確寫法
            proxy_pass http://www.ken.com/;       <<< 錯誤寫法
            proxy_pass http://www.ken.com/img;    <<< 錯誤寫法
        }

    此時,若是請求的url是 http://www.baidu.com/book/stu/a.php ,就會代理成 http://www.ken.com/book/stu/a.php
複製代碼

補充三

複製代碼
補充3:
    在location中若是有重定向的話,那麼就用重定向後的uri替換掉代理節點中的uri
        location / {
            rewrite /(.*)$ /index.php?name=$1 break;
            proxy_pass http://www.baidu.com:80/img;
        }

    此時,若是請求的url是 http://www.ken.com/bajie ,就會代理成 www.baidu.com/index.php?name=bajie
複製代碼

 

Location匹配規則

 

語法規則: 【= | ^~ | ~ | ~* | / | /uri 】

location = /uri                 = 表示精確匹配,只有徹底匹配上才能生效,若找到,中止搜索;

location ^~ /uri               ^~開頭表示對URL路徑進行前綴匹配(一般是個目錄),而且在正則匹配以前,若找到,中止搜索;

location ~ pattern           ~開頭表示區分大小寫的正則匹配,按配置文件順序匹配;

location ~* pattern          ~*開頭表示不區分大小寫的正則匹配,按配置文件順序匹配;

location /uri                    不帶任何修飾符,表示前綴匹配,在正則匹配以後;

location /                        通用匹配,任何未匹配到其餘location的請求都會匹配到,至關於default;

多個location配置的狀況匹配順序爲

  • 首先精確匹配 = ;
  • 其次前綴匹配 ^~;
  • 其次是按照配置文件中的正則匹配;
  • 而後匹配不帶任何修飾符的前綴匹配;
  • 最後交給/通用匹配;

 

 

nginx實現負載均衡

 

1.幾個概念

調度器:分發用戶的請求到一個後端節點

上游服務器(真實服務器):每一個真正用來處理用戶請求的節點都是一個上游服務器

CIP:客戶端的IP地址

RIP:真實服務器的IP地址

VIP:虛擬IP,用戶所看到的是也是虛擬IP

2.指令

複製代碼
指令:upstream
    做用:定義一個上游服務器組
    格式
        upstream name {
            server  上游服務器1  參數 參數;
            server  上游服務器1  參數 參數;
            server  上游服務器1  參數 參數;
        }
複製代碼

3.重要參數

    weight=#:設置服務器的權重(數字越大,權重越高)
    backup: 設置服務器處於備用狀態(其餘節點出現故障,備用節點纔開始工做)
    down:設置讓一個節點處於離線狀態(常常用在維護一個節點的狀況下)
    max_fails=number:設置連續幾回轉發失敗就認爲該節點出現故障,而後就再也不向該節點轉發用戶請求了
    fail_timeout=time: 和上個參數組合使用,做用是設置等待上游服務器響應超時時間

4.nginx實現負載均衡實戰案例

1.環境準備

centos7.5

nginx服務器IP:172.20.10.7/28

web1服務器端IP:172.20.10.8/28

web2服務器端IP:172.20.10.9/28

2.配置nginx服務器端

安裝nginx略

配置nginx文件

複製代碼
[root@ken ~]# vim /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
       # include /etc/nginx/conf.d/*.conf;
    upstream ken {
        server 172.20.10.8 weight=1 max_fails=3 fail_timeout=5;
        server 172.20.10.9 weight=2 max_fails=3 fail_timeout=5;
    }
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /var/www/html;
  index index.php index.html;

        # Load configuration files for the default server block.
        # include /etc/nginx/default.d/*.conf;

        location / {
        proxy_pass http://ken/;
        proxy_set_header host $proxy_host;
        proxy_set_header realip $remote_addr;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}
            
複製代碼

語法檢測

[root@ken ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重啓nginx

[root@ken ~]# systemctl restart nginx

3.配置web服務器端

略.和上面反向代理配置同樣。

4.瀏覽器測試

輸入nginx服務器端的IP地址

由於172.20.10.9的權重爲2,即出現兩次172.20.10.9纔會出現一次172.20.10.8.進行刷新測試

測試成功!

 

LNMP架構上線動態網站

 

第一步:安裝服務程序

[root@ken ~]# yum install nginx php php-mysql php-fpm mariadb-server -y

 

下載php-fpm須要用到下面的源

[centos]
name=centos base
enabled=1
gpgcheck=0
baseurl=http://mirrors.163.com/centos/7/os/x86_64/

 

第二步:修改nginx配置文件

修改server部分

複製代碼
[root@ken ~]# vim /etc/nginx/nginx.conf
    server {
        listen       80;
        server_name  _;
        root         /var/www/html;  #更改了網站根目錄(習慣而已)
       index index.php index.html;  #添加index.php默認頁

        # Load configuration files for the default server block.
    #    include /etc/nginx/default.d/*.conf;
        location  ~ /.*\.php$ {   #定義一個匹配php文件的規則
        fastcgi_pass 127.0.0.1:9000;  #php-fpm監聽的地址
        include fastcgi.conf;   #加載fastcgi文件
}
複製代碼

 

第三步:重啓nginx和php-fpm

[root@ken ~]# systemctl restart nginx
[root@ken ~]# systemctl restart php-fpm

 

第四步:刪上傳wordpress並編輯

複製代碼
[root@ken ~]# cd /var/www/html/
[root@ken html]# rz

[root@ken html]# ls
wordpress-3.3.1-zh_CN.zip
[root@ken html]# unzip wordpress-3.3.1-zh_CN.zip 
[root@ken html]# ls
wordpress  wordpress-3.3.1-zh_CN.zip
[root@ken html]# mv wordpress/* .
[root@ken html]# ls
index.php    wordpress-3.3.1-zh_CN.zip  wp-blog-header.php    wp-cron.php        wp-login.php     wp-settings.php
license.txt  wp-activate.php            wp-comments-post.php  wp-includes        wp-mail.php      wp-signup.php
readme.html  wp-admin                   wp-config-sample.php  wp-links-opml.php  wp-pass.php      wp-trackback.php
wordpress    wp-app.php                 wp-content            wp-load.php        wp-register.php  xmlrpc.php
[root@ken html]# cp wp-config-sample.php wp-config.php 
[root@ken html]# vim wp-config.php
複製代碼

第五步:啓動數據庫並建立數據庫和用戶

複製代碼
[root@ken html]# systemctl restart mariadb
[root@ken html]# mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database ken;
ERROR 1007 (HY000): Can't create database 'ken'; database exists
MariaDB [(none)]> grant all on *.* to ken@'localhost' identified by '123';
複製代碼

 

第六步:瀏覽器測試訪問

相關文章
相關標籤/搜索