摘要:你賦權語句是也就是針對這個數據庫賦權。這就是的權限檢查模塊的工作過程。并不是你出現了錯誤,而是的內部機制就是這樣的。這里面對的權限機制做了詳細的講解。
本節會安裝Nginx,Mysql.一、Nginx反向代理服務器 1、Nginx簡介
Nginx是一款輕量級Web服務器、也是一款反向代理服務器.
作用:
(1)、可以直接支持Rails和PHP的程序
(2)、可作為HTTP反向代理服務器
(3)、作為負載均衡服務器
(4)、作為郵件代理服務器
(5)、幫助實現前端動靜分離
特點:
高穩定、高性能、資源占用少、支持熱部署
安裝環境:centOS 6.8 64位
安裝版本:1.0.2
安裝步驟:
安裝gcc(命令:yum install gcc,可輸入 gcc -v 查詢系統是否自帶安裝)
安裝pcre(命令:yum install pcre-devel)
安裝zlib(命令:yum install zlib zlib-devel)
安裝openssl(命令:yum install openssl openssl-devel,如需支持ssl,才需安裝openssl)
綜合命令:
yum install gcc pcre-devel zlib zlib-devel openssl openssl-devel
5.下載源碼包,選擇穩定版本,解壓縮安裝(http://www.nginx.org/)
wget http://nginx.org/download/nginx-1.10.2.tar.gz
6.解壓縮
tar -zxvf nginx-1.10.2.tar.gz
7.進入Nginx目錄之后執行 ./configure
1)、也可以指定安裝目錄,增加參數 --prefix=/usr/nginx
2)、如果不指定路徑,可以通過 whereis nginx 來查詢
8.繼續執行 make
9.繼續執行 make install
默認安裝在 /usr/local/nginx
安裝成功之后,可以測試訪問,默認是80端口:
3、Nginx常用命令 1.測試配置文件安裝路徑下的 /nginx/sbin/nginx -t
2.啟動命令安裝路徑下的 /nginx/sbin/nginx
/usr/local/nginx/sbin/nginx3.停止命令
安裝路徑下的 /nginx/sbin/nginx -s stop
或:nginx -s quit
安裝路徑下的 /nginx/sbin/nginx -s reload
5.查看進程命令ps -ef | grep nginx6.平滑重啟
kill -HUP [Nginx主進程號(即查看進程命令查到的PID)]
7.增加防火墻訪問權限sudo vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
重啟防火墻:
sudo service iptables restart4、Nginx虛擬域名配置及測試 網站域名配置
修改配置文件:
[root@corwien conf]# pwd /usr/local/nginx/conf # 添加文件夾 mkdir vhost
編輯nginx配置文件:
vim nginx.conf
nginx.conf 配置文件
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache"s document root # concurs with nginx"s one # #location ~ /.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} include vhost/*.conf; # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
編輯hosts配置文件:
vim /etc/hosts
編輯域名配置:
[root@corwien vhost]# pwd /usr/local/nginx/conf/vhost [root@corwien vhost]# vim www.emall.com.conf
server { listen 80; autoindex on; server_name www.emall.com; access_log /usr/local/nginx/logs/access.log combined; index index.html index.htm index.jsp index.php; # root /product/ftpfile/; #error_page 404 /404.html; if ( $query_string ~* ".*[;"<>].*" ){ return 404; } location / { proxy_pass http://127.0.0.1:8080; add_header Access-Control-Allow-Origin *; } }
驗證:
(1)先開啟Tomcat服務
# 開啟Tomcat服務 /developer/apache-tomcat-7.0.82/bin/startup.sh
(2)使用域名 www.emall.com 訪問:
我們可以看到,可以正常訪問。
圖片文件夾域名配置創建配置:
[root@corwien vhost]# pwd /usr/local/nginx/conf/vhost [root@corwien vhost]# vim image.emall.com.conf
編輯圖片目錄域名配置文件
server { listen 80; autoindex off; server_name image.emall.com; access_log /usr/local/nginx/logs/access.log combined; index index.html index.htm index.jsp index.php; # root /product/ftpfile/; #error_page 404 /404.html; if ( $query_string ~* ".*[;"<>].*" ){ return 404; } location ~ /(mmall_fe|mmall_admin_fe)/dist/view/* { deny all; } location / { root /ftpfile/; add_header Access-Control-Allow-Origin *; } }
如果我們使用 image.emall.com/m.jpg 文件,會出現404的問題,因為我們的域名配置文件有誤,應該添加后綴名 /usr/local/nginx/conf/vhost/image.emall.com 改為
/usr/local/nginx/conf/vhost/image.emall.com.conf,因為我們在 nginx.conf 配置文件中這樣加載的 include vhost/*.conf;
[root@corwien vhost]# vim s.emall.com.conf
編輯 s.emall.com.conf:
server { listen 80; autoindex off; # 是否自動創建索引,如果開啟則會列出下面目錄文件的索引 server_name s.emall.com; access_log /usr/local/nginx/logs/access.log combined; index index.html index.htm index.jsp index.php; # root /product/ftpfile/; #error_page 404 /404.html; if ( $query_string ~* ".*[;"<>].*" ){ return 404; } location ~ /(mmall_fe|mmall_admin_fe)/dist/view/* { deny all; } location / { root /product/front/; add_header Access-Control-Allow-Origin *; } }
配置之后,需要重啟Nginx服務器:
[root@corwien nginx]# sbin/nginx -s reload二、MySQL安裝 1、安裝環境
系統環境:CentOS 6.8 64位
MySQL版本:mysql-server-5.1.73(阿里軟件源默認帶的版本)
yum -y install mysql-server
可以通過 rpm -qa | grep mysql-server 此語句來檢查是否已經安裝mysql-server
mysql 默認配置文件在 /etc/my.cnf
(2)、字符集配置:
vim /etc/my.cnf
添加配置,在[mysqld]節點下添加:
default-character-set=utf8 character-set-server=utf8
:wq保存退出
/etc/my.cnf文件:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # 設置字符集[20180107] default-character-set=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
關于中文亂碼問題:
在5.1版本,為了解決中文亂碼問題,my.ini內[mysql]和[mysqld]中都寫:
default-character-set=utf8
在5.5版本,[mysql]內可以這么寫,[mysqld]內不能再這么寫了,而是寫:
character-set-server=utf83、開機自啟動配置
(1)、執行 chkconfig mysqld on
(2)、執行 chkconfig --list mysqld查看(如果2-5位啟用on狀態即OK)
(3)、啟動MySQL
service mysqld start
(4)、登錄mysql
無密碼登錄
[root@corwien corwien]# mysql -u root4、防火墻配置
(1)、vim /etc/sysconfig/iptables
(2)、-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 將以上配置添加到防火墻配置中
(3)、sudo service iptables restart 執行命令重啟防火墻
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT5、刪除匿名用戶
(1)、查看目前MySQL的用戶
select user,host,password from mysql.user
我們可以看到有兩個匿名用戶,出于安全考慮,我們把匿名用戶刪掉:
mysql> delete from mysql.user where user = "";
刪除匿名用戶,執行以下SQL(安全考慮)
查看是否有匿名用戶:select user, host from mysql.user;
刪除匿名用戶:delete from mysql.user where user="";
刷新、使以上操作生效:flush privileges
mysql> insert into mysql.user(Host,User,Password) values("localhost", "emall", password("518666"));7、修改用戶權限
查看所有用戶權限:
mysql> select * from mysql.user G;
G 表示對輸出的內容進行格式化
G 格式化之后輸出的數據:
我們可以看到,剛才添加的新用戶 emall 的權限都為N,所以這里要對這個用戶權限做開放:
根據自己實際情況決定是否開放什么權限
語法模板:
grant all privileges on 庫名.表名 to "用戶名"@"IP地址" identified by "密碼" with grant option; flush privileges;
庫名:要遠程訪問的數據庫名稱,所有的數據庫使用“*” 表名:要遠程訪問的數據庫下的表的名稱,所有的表使用“*” 用戶名:要賦給遠程訪問權限的用戶名稱 IP地址:可以遠程訪問的電腦的IP地址,所有的地址使用“%” 密碼:要賦給遠程訪問權限的用戶對應使用的密碼
舉例:
GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "lxh" WITH GRANT OPTION; # 所有的地址都可以使用root用戶,密碼為lxh遠程訪問所有的數據庫 flush privileges; GRANT ALL PRIVILEGES ON testdb.* TO "lxh"@"172.16.52.225" IDENTIFIED BY "lxh" WITH GRANT OPTION; # IP為172.16.52.225的電腦可以使用lxh用戶,密碼為lxh遠程訪問數據庫testdb的所有表
賦予emall這個用戶所有權限:
mysql> grant all privileges on emall.* to emall@"%" identified by "518666" with grant option;
或者只賦予查增改權限,不讓此用戶對數據庫進行刪除操作:
mysql> grant select,update,create on emall.* to emall@"%" identified by "emall" with grant option;
我們再查看授權是否成功:
mysql> select * from mysql.user G;
已經授過權了,為什么這里還是N呢?
原因是:select * from mysql.user G;給出的是全局的權限,而不是針對某個DB或者SCHEMA得權限。你賦權語句是grant all privileges on emall.* to "emall"@"%" identified by "518666" with grant option;也就是針對emall這個數據庫賦權。那么你自然會得出權限都是‘N’了。
那么,這是不是錯誤的呢?答案當然不是了。
具體的流程是這樣的:假如你有一個SQL的query,比如是select * from emall.table1。mysql會首先去user表中對比你(emall@localhost)是否有select 權限?發現是N.然后,它并不會直接拒絕這個query,而是會繼續對照Database級別上檢驗權限,會db.user="emall" and db.db="emall" and db.host="localhsot",如果檢驗通過,則通過,否則繼續向下檢驗,host.db="emall" and host.host="localhost",若檢驗通過,則通過,否則繼續向下檢驗table級別,然后是column級別。
這就是mysql的權限檢查模塊的工作過程。
并不是你出現了錯誤,而是mysql的內部機制就是這樣的。
建議你仔細看下這篇文章http://tech.it168.com/a2010/0...。這里面對mysql的權限機制做了詳細的講解。
相關文章:
mysql grant 授權不起作用
所以,這里我們給所有庫授權,則這里的權限即可為Y:
mysql> grant all privileges on *.* to emall@"%" identified by "518666" with grant option;8、修改root密碼
set password for root@localhost=password("yourpassword"); set password for root@127.0.0.1=password("yourpassword");
設置root密碼:
mysql> set password for root@127.0.0.1=password("root"); Query OK, 0 rows affected (0.00 sec)
重新登錄:
mysql -uroot -p9、創建數據庫
查看所有數據庫:
mysql> show databases;
創建數據庫:
mysql> create database `emall` default character set utf8 collate utf8_general_ci;10、忘記root密碼解決方法
密碼太多記不住??你是否忘記了MySQL的root密碼? 通過以下4步就可重新設置新密碼:
停止 mysql server
service mysqld stop
2.打開終端,輸入:
找到mysql安裝目錄:
[root@corwien download]# whereis mysql mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
[root@corwien download]# /usr/bin/mysqld_safe --skip-grant-tables
3.打開另一個新終端,輸入:
[root@corwien corwien]# /usr/bin/mysql -u root mysql> UPDATE mysql.user SET authentication_string=PASSWORD("root") WHERE User="root"; ERROR 1054 (42S22): Unknown column "authentication_string" in "field list" mysql> UPDATE mysql.user SET password=PASSWORD("root") WHERE User="root"; Query OK, 2 rows affected (0.00 sec) Rows matched: 3 Changed: 2 Warnings: 0 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye
4.然后重啟mysql,重新登錄:
[root@corwien corwien]# service mysqld start [root@corwien corwien]# mysql -uroot -p Enter password:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39754.html
摘要:你賦權語句是也就是針對這個數據庫賦權。這就是的權限檢查模塊的工作過程。并不是你出現了錯誤,而是的內部機制就是這樣的。這里面對的權限機制做了詳細的講解。 本節會安裝Nginx,Mysql. 一、Nginx反向代理服務器 1、Nginx簡介 Nginx是一款輕量級Web服務器、也是一款反向代理服務器. 作用:(1)、可以直接支持Rails和PHP的程序(2)、可作為HTTP反向代理服務器(...
摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時間比較早,而且堅持的時間也比較久,一直到現在也是一直保持著更新狀態。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時...
閱讀 2581·2021-11-22 12:01
閱讀 1105·2021-11-15 11:37
閱讀 3685·2021-09-22 14:59
閱讀 1746·2021-09-04 16:45
閱讀 1382·2021-09-03 10:30
閱讀 1013·2021-08-11 11:18
閱讀 2459·2019-08-30 10:53
閱讀 2013·2019-08-29 15:13