วันพุธที่ 27 กรกฎาคม พ.ศ. 2559

การ Grant สิทธิ์ ให้User sa

การ grant สิทธิให้ user sa


บทความนี้ เขียนขึ้นเพื่อแก้ไขการ connect mysql ไม่ได้ เนื่องจากผลกระทบหลังจาก Upgrade MySQL 5.5.31

ปกติ หลังจาก Upgrade MySQL แล้ว hosxp_pcu ก็ใช้งานได้เลย
****แต่มีบางเครื่อง ที่ไม่สามารถ connect mysql ได้ ย้ำนะครับ เป็นบางเครื่องเท่านั้น**** 

วิธีแก้ไข

วิธีที่ 1
แก้ connection มุมซ้ายล่างหน้า login โดยใช้ user root password ปล่อยว่างไว้
User : root
Password :

วิธีที่ 2 
สร้าง User sa  password sa  ขึ้นมาใหม่ โดยการ Run ไฟล์ที่ส่งมานี้
โดยการ
-ดาวน์โหลดไฟล์ grant_sa.zip มาไว้ในเครื่อง server
-แตกไฟล์ออกจะได้ 4 ไฟล์ คือ grant_sa.bat mysql.exe  grant_sa.sql และ readme.txt
-Run คำสั่ง ให้ดับเบิ้ลคลิ๊กไฟล์  grant_sa.bat จะเกิดจอดำ ให้กด enter
-แก้ connection มุมซ้ายล่างหน้า login โดยใช้ user sa password sa ()
User : sa
Password : sa
หมายเหตุ : -ถ้า Run คำสั่งในเครื่อง client ให้แก้คำสั่งใน grant_sa.bat   โดยเปลี่ยนคำว่า localhost เป็น หมายเลข IP ของเครื่อง server

===========อธิบายคำสั่งในไฟล์ grant_sa.bat===========
คำสั่งจะเป็นแบบนี้
@ECHO OFF
"mysql.exe"  -h localhost -P 3306  -u root -p  hosxp_pcu < "grant_sa.sql"


แปลว่า เรียกใช้งานไฟล์ mysql.exe ซึ่งอยู่ตำแหน่งนี้ เพื่อติดต่อกับ mysql server ซึ่งอยู่ที่เครื่องนี้  ทาง port หมายเลข 3306 โดยใช้ User ชื่อ root
    password ยังไม่ใส่  จะทำงานกับฐานข้อมูลชื่อ hosxp_pcu โดยไปเอาคำสั่งในการทำงานมาจากไฟล์ grant_sa.sql ที่อยู่ตำแหน่งนี้เช่นกัน
    ทั้งนี้ไม่ต้องแสดงผลการทำงานของคำสั่ง

อธิบายได้ว่า
@ECHO OFF  => ไม่ต้องแสดงผลการทำงานของคำสั่ง

"mysql.exe"  => เรียกใช้งานไฟล์ mysql.exe ณ ตำแหน่ง(path) เดียวกันกับไฟล์ grant_sa.bat
     (อยู่ด้วยกันไม่ต้องระบุพาธ) แต่ถ้าไฟล์ mysql.exe ไม่อยู่ตำแหน่งนี้ ต้องระบุ path ให้ทราบว่าจะไปเรียกได้ที่ไหน เช่น
    "C:\Program Files\HOSxP_PCU\MySQL\bin\mysql.exe"  หรือ
    "C:\Program Files (x86)\HOSxP_PCU\MySQL\bin\mysql.exe" หรือ
    "C:\Program Files\Chronic\Chronic DBIES System\mysql.exe" เป็นต้น

-h localhost   => -h = host หมายถึง จะติดต่อกับ mysql server ที่ host ไหน ค่า default
     คือ localhost ในที่นี้ ระบุว่า localhost หมายถึงเครื่องนี้  อีกค่าหนึ่งที่หมายถึงเครื่องนี้เช่นกัน
     คือ ค่า 127.0.0.1   หรือถ้าไม่ระบุ -h เลย ก็แสดงว่าให้เรียกใช้ค่า default ก็คือค่า localhost
     เช่นกัน

-P 3306    => -P = Port  หมายถึง จะติดต่อกับ mysql server โดยใช้ port เลขที่เท่าไหร่
     ค่า default คือ 3306  ถ้าระบุ -P xxxx ก็จะเรียกไปที่ port xxxx แต่ถ้าไม่ระบุ -P เลย ก็แสดงว่า
     ให้เรียกใช้ค่า default ก็คือค่า 3306 นั่นเอง

-u root   => -u = UserName หมายถึง จะติดต่อกับ mysql server โดยใช้ User ชื่ออะไร ชื่อนี้ต้อง
     มีการกำหนดไว้ก่อนแล้ว และคนที่ติดตั้ง mysql จะเป็นผู้กำหนดว่า  User มีสิทธิทำอะไรได้บ้าง
     ปกติ User ที่ทำได้ทุกอย่างจะชื่อ root

-p    => -p = password หมาถึง password ของ User ที่จะติดต่อกับ mysql server ถ้า -p เฉยๆ
     ไม่มีค่าอะไรต่อท้าย แสดงว่ายังไม่ส่งค่า  password ไป.. mysql server จะถามให้ใส่ค่า
      password ก่อนจะทำคำสั่ง  แต่ถ้าไม่ต้องการให้ถาม ให้ใส่ password ต่อท้าย  -p โดยไม่เว้น
      ช่องว่าง  เช่น -p123456    หรือ -psa  เป็นต้น

hosxp_pcu   => หมายถึง ชื่อ database ที่จะใช้งาน ในที่นี้จะเรียกใช้งานฐานข้อมูลที่ชื่อ
     hosxp_pcu

< "grant_sa.sql"   => หมายถึงให้ไปเอาคำสั่งมาจากไฟล์ grant_sa.sql  ที่อยู่ที่เดียวกัน
     กับไฟล์ grant_sa.bat  (อยู่ด้วยกันไม่ต้องระบุพาธ) แต่ถ้าไฟล์ grant_sa.sql ไม่อยู่ตำแหน่งนี้
     ต้องระบุ path ให้ทราบว่าจะไปเรียกได้ที่ไหน เหมือนกันกับการระบุ path เรียก mysql.exe


===========อธิบายคำสั่งในไฟล์ grant_sa.sql===========
คำสั่งจะเป็นแบบนี้
GRANT All PRIVILEGES ON *.*  to 'sa'@'localhost' IDENTIFIED BY 'sa'  WITH GRANT OPTION;
GRANT All PRIVILEGES ON *.*  to 'sa'@'127.0.0.1' IDENTIFIED BY 'sa'  WITH GRANT OPTION;
GRANT All PRIVILEGES ON *.*  to 'sa'@'::1' IDENTIFIED BY 'sa'  WITH GRANT OPTION;
GRANT All PRIVILEGES ON *.*  to 'sa'@'%' IDENTIFIED BY 'sa'  WITH GRANT OPTION;
flush privileges;


แปลว่า อนุญาตสิทธิทุกอย่าง บนฐานข้อมูลทุกฐาน ให้กับ user ที่ชื่อ sa ที่ติดต่อมาจากเครื่องนี้และเครื่องอื่นๆ โดยใช้ password ว่า sa และให้สิทธิในการ
grant สิทธิให้คนอื่นต่อไปด้วย

GRANT All PRIVILEGES  = อนุญาตสิทธิทุกอย่าง
ON *.*         = บนฐานข้อมูลทุกฐาน
 to 'sa'           = ให้กับ user ที่ชื่อ sa
@'localhost'     = ที่ติดต่อมาจากเครื่องนี้
@'127.0.0.1'    = ที่ติดต่อมาจากเครื่องนี้
@'::1'        = ที่ติดต่อมาจากเครื่องนี้
@'%'        = ที่ติดต่อมาจากเครื่องอื่นๆ
IDENTIFIED BY 'sa' = โดยใช้ password ว่า sa
WITH GRANT OPTION = ให้สิทธิในการอนุญาตสิทธิให้คนอื่นต่อไปด้วย 
flush privileges = ยัดสิทธิในเข้าไป หรือให้ใช้งานสิทธิตามที่กำหนดได้
ทีมา http://hosxpyaso.blogspot.com/2013/08/grant-user-sa.html

ไม่มีความคิดเห็น:

แสดงความคิดเห็น