วันจันทร์ที่ 1 กุมภาพันธ์ พ.ศ. 2564

ติดตั้ง mysql server บน ubuntu 16.04 server

 

ติดตั้ง mysql server บน ubuntu 16.04 server

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 13-06-2560
ดูแลโดย WIBOON

ก่อนอื่นให้เพิ่ม locale ด้วยคำสั่ง
mama@ubuntu:~$ sudo locale-gen en_US en_US.UTF-8 th_TH th_TH.UTF-8
mama@ubuntu:~$ sudo dpkg-reconfigure locales
กด Enter เพื่อใช้ค่าที่เตรียมนี้

1. ติดตั้ง MySQL server ลงใน host server
1.1 ติดตั้งโปรแกรม

mama@ubuntu:~$ sudo apt install mysql-server
The following NEW packages will be installed:
  libaio1 ........
  ........ mysql-server-core-5.7
After this operation, 162 MB of additional disk space will be used.
Do you want to continue? [Y/n] ตอบ Y
Configuring mysql-server-5.7
 New password for the MySQL "root" user: 

ตั้งรหัสผ่าน

ไฟล์สำหรับการตั้งค่า mysql server อยู่ที่ไหนกันบ้าง

mama@ubuntu:~$ ls -l /etc/mysql/mysql.conf.d/mysqld.cnf
-rw-r--r-- 1 root root 3028 Jul 14 23:09 /etc/mysql/mysql.conf.d/mysqld.cnf


และอันนี้เป็นไฟล์สำหรับการตั้งค่า mysql client ที่ได้มาด้วย
ตรวจสอบดูพาธของไฟล์ my.cnf และ mysql.cnf คืออันเดียวกัน

mama@ubuntu:~$ ls -l /etc/mysql/my.cnf /etc/mysql/mysql.cnf
lrwxrwxrwx 1 root root  24 Aug 23 10:27 /etc/mysql/my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 root root 682 Jul 11 20:36 /etc/mysql/mysql.cnf


my.cnf เป็น symbolic link file ไปยังไฟล์จริงที่ mysql.cnf

mama@ubuntu:~$ ls -l /etc/alternatives/my.cnf
lrwxrwxrwx 1 root root 20 Aug 23 10:27 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf
mama@ubuntu:~$


1.2 ปรับแต่งค่า bind address ที่ mysqld.cnf ให้ mysql client IP จากภายนอก สามารถ connect เข้ามายัง database ได้ ไม่เพียงแค่ localhost เท่านั้น
ถ้าตั้งค่า bind-address = IP ของ network interface จะหมายถึงอนุญาตเฉพาะ network นั้นเท่านั้น
ถ้าตั้งค่า bind-address = :: จะหมายถึงอนุญาตทั้ง IPv4 และ IPv6 ทุกเครื่อง (แต่ควรจะไปกำหนด host firewall rule ในการอนุญาตเฉพาะเครื่องที่จะให้เข้าถึง เช่น ใช้ ufw หรือ shorewall เป็นต้น)
mama@ubuntu:~$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
เดิม
bind-address = 127.0.0.1
เปลี่ยนเป็น
bind-address = ::

1.3 ต้อง restart mysql ด้วยเมื่อมีการแก้ไขค่า config
mama@ubuntu:~$ sudo systemctl restart mysql.service
และก็ควรตรวจสอบ status ด้วยว่า restart สำเร็จหรือไม่
mama@ubuntu:~$ sudo systemctl status mysql.service
ผลลัพธ์

- mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Mon 2016-08-29 15:38:14 ICT; 8s ago
Aug 29 15:38:13 ubuntu systemd[1]: Stopped MySQL Community Server.
Aug 29 15:38:13 ubuntu systemd[1]: Starting MySQL Community Server...
Aug 29 15:38:14 ubuntu systemd[1]: Started MySQL Community Server.


2. ตัวอย่างการสร้าง database ด้วย mysql client เป็นต้น
ชื่อ database คือ mydb
ชื่อ user คือ myuser
รหัสผ่านของ myuser คือ mypassword
'myuser'@'localhost' คือ myuser ที่ให้สิทธิเข้าถึง database ได้จาก client localhost เท่านั้น
'myuser'@'%' คือ myuser ที่ให้สิทธิเข้าถึง database ได้จาก client ใด ๆ ก็ได้
การใช้ myuser ทั้งสองแบบนี้ ถือว่าเป็นคนละยูสเซอร์ ดังนั้นรหัสผ่านจึงเป็นคนละอันกัน

เขียนคำสั่ง (แบบรอป้อน password ดังนี้)

mama@ubuntu:~$ mysql -u root -p
Enter password: 

แล้วสร้าง database, user ดังนี้

Welcome to the MySQL monitor.  Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE mydb CHARACTER SET 'UTF8';
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye


3. การแบ็กอัพ database
สมมติว่า user ชื่อ root และ password คือ 123456
ใช้คำสั่งดังนี้

mama@ubuntu:~$ mysqldump -u root -p123456 mydb > mydb.sql

หรือเขียนคำสั่งแบบรอป้อน password ดังนี้

mama@ubuntu:~$ mysqldump -u root -p mydb > mydb.sql
Enter password:


4. การรีสโตร์ database
ขั้นตอน
1. เมื่อเราทำเครื่อง server ใหม่ ให้เราสร้าง database ก่อนให้เหมือนกับที่สำรองเก็บไว้จากเครื่องเดิม
2. แล้ว import ข้อมูลจากไฟล์ mydb.sql กลับเข้าใน database ด้วยคำสั่ง

mama@ubuntu:~$ mysql -uroot -p123456 mydb < mydb.sql

หรือเขียนคำสั่งแบบรอป้อน password ดังนี้

mama@ubuntu:~$ mysql -uroot -p mydb < mydb.sql


5. ไม่ต้องป้อน password ทุกครั้ง และไม่เปิดเผย password ไว้ในบรรทัดคำสั่ง mysqldump
นำ password ไปเขียนไว้ในไฟล์ mypw.cnf เป็นวิธีการที่ใช้ในการ backup ทุกวันด้วย cron
สร้างไฟล์ mypw.cnf ด้วยคำสั่ง

mama@ubuntu:~$ sudo vi mypw.cnf

ภายในไฟล์จะมีข้อมูล username และ password เช่น

[mysqldump]
user=myuser
password=mypassword

ทดสอบอีกครั้ง

mama@ubuntu:~$ mysqldump --defaults-extra-file=mypw.cnf mydb > mydb.sql
https://opensource.cc.psu.ac.th/%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_mysql_server_%E0%B8%9A%E0%B8%99_ubuntu_16.04_server
https://www.hackthesec.co.in/2016/01/how-to-install-mysql-57-or-56-or-55-on.html

1130 – Host ‘xxxx.local’ is not allowed to connect to this MySQL Navicat

 1130 – Host ‘xxxx.local’ is not allowed to connect to this MySQL

 

How to Allow MySQL Client to Connect to Remote MySQL server


สืบเนื่องจากเคยแนะนำโปรแกรม NaviCat ไปแล้ว คราวนี้หากใครเจอปัญหาข้างต้น ให้รู้เลยว่า สิทธิ์การเข้าถึง ของ user ที่เราใช้ มันไม่พอจะ connect เข้าไปได้


วิธีการแก้ไขก็คือ

$ mysql -u root -p

Enter password:

mysql> use mysql

mysql> GRANT ALL ON *.* to newuser@'%' IDENTIFIED BY 'user-password'; 

mysql> FLUSH PRIVILEGES;

 ตัวอย่าง GRANT ALL ON *.* to root@'%' IDENTIFIED BY '12345678'; 

คำอธิบาย

GRANT คือคำสั่งสั่งหรับเพิ่ม user ใหม่ให้กับ mysql

ALL คือ การให้สิทธิ์ทุกอย่าง ทั้ง Global ทั้ง user และ table ให้กับ user ชื่อนี้

*.* คือ ทุกฐานข้อมูล ทุกตาราง

to คือ ให้กับ

newuser คือชื่อผู้ใช้ที่ต้องการกำหนด หรือใช้ user เดิมก็ได้ครับ

% คือ กำหนดให้ login มาจากที่ไหนก็ได้ ไม่เหมือน localhost นะครับ หรือใส่เลข host IP

IDENTIFIED BY หมายถึง จากทั้งหมดที่กำหนด การเข้าใช้งานต้องยืนยันรหัสผ่าน ด้วย

user-password คือ รหัสผ่านของ user นั้นที่เรากำหนดลงไปครับผม

https://moremeng.in.th/2012/04/1130-host-xxxx-local-is-not-allowed-to-connect-to-this-mysql.html

วันศุกร์ที่ 29 มกราคม พ.ศ. 2564

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

Soft link Directory Ubuntu Symbolic

 

ผมทดสอบสร้างลิงค์  Shortcut โฟลเดอร์เพื่อใช้ในการดึงรูปภาพ  ได้ผลอย่างประทับใจ  ถ้ามีการเพิ่มไฟล์  โฟลเดอร์ที่เป็นลิงค์ก็จะเพิ่มาด้วย ไม่ต้องเปลืองพื้นที่  อยู่ต่างPartition ก้ได้

Create the symlink:  Ubuntu

# sudo ln -s /mbase/datasource/photo /var/www/photo1
http://linux-hm.blogspot.com/2017/04/create-shortcut-with-ln.html
https://askubuntu.com/questions/465493/how-can-i-symlink-my-home-folder-from-another-drive



วันจันทร์ที่ 4 มกราคม พ.ศ. 2564

ESXi 6.7 การตั้งค่าAuto Start virtual Machin

 1.Login เข้าไปที่ vSphere Client
2. เลือก Root



3.เลือกManage->Auto Start
4.เลือกEdit Setting  กด Yes

5.







ESXi - การตั้งค่า Auto start virtual machine

การตั้งค่าให้ virtual machine เปิดอัตโนมัติหลังจากเปิดเครื่องโฮส

  1. Login เข้า vSphere Client

  2. กดเลือกที่ root
    01

  3. เลือกแถบ Configuration
    02

  4. ในส่วนของ Software เลือก Virtual Machine Startup/Shutdown

  5. จะเห็นรายชื่อ Virtual Machine ที่เรามีอยู่ทั้งหมดเป็น Manual Startup โดยสามารถเข้าไปตั้งค่า Automatic Startup ได้โดยเข้าไปที่ Properties.. (ทางมุมบนขวา)
    03

  6. จะขึ้นหน้า Virtual Machine Startup and Shutdown
    04

  7. เลือก Virtual Machine ที่เราต้องการให้เปิดอัตโนมัติหลังที่เปิดเครื่อง Host โดยกดเลือกที่ Virtual Machine ที่ต้องการ แล้วกด Move Up เพื่อเลื่อนขึ้นไปอยู่ในตำแหน่ง Automatic Startup
    05

  8. โดยสามารถเรียงลำดับการเปิด Virtual Machine และตั้งค่า Delay startup ของแต่ละเครื่อง ในที่นี้ตั้งไว้ที่ 120 วินาที
    06

  9. เมื่อตั้งค่าเสร็จกด OK เพียงเท่านี้ถ้ามีเหตุการเครื่อง HOST ดับไปและเปิดขึ้นมาคุณก็ไม่ต้องมานั่งไล่เปิด Virtual Machine เองทีละเครื่อง และไม่ต้องนั่งจำว่าเครื่องไหนต้องเปิดเครื่องไหนไม่ต้องเปิดอีกต่อไป เพราะมันจะเปิดให้คุณเอง
    https://systemsupport.itorama.com/vmware-vspeher-kaartangkhaa-auto-start-virtual-machine-hlangcchaak-start-ekhruue-ng-host-ody-atonmati/

วันจันทร์ที่ 28 ธันวาคม พ.ศ. 2563

ยกเลิกVisit is_cancel =1กรณีทำพลาด

 UPDATE  opd_visits o  SET o.is_cancel = 1

WHERE  o.VISIT_ID in ('0002400936'

,0002400937,0002400938,

0002400939,

0002400940,

0002400941,

0002400942

)

**************************

หาVisit

SELECT  o.REG_DATETIME, o.VISIT_ID ,c.cid, c.hn, o.is_cancel, o.staff_id

 FROM opd_visits o

 INNER JOIN cid_hn c ON o.hn = c.hn

  WHERE o.REG_DATETIME >= CURDATE() 

 AND o.STAFF_ID = 0341