Sunday, March 24, 2024

Authentication plugin 'caching_sha2_password' cannot be loaded

  • ประเด็นมีอยู่ว่า mysql client บน Window 10 จะ remote connect MySQL บน Ubuntu 22.04 ซึ่งน่าจะติดตั้ง MySQL 8.0 ไว้นะคิดว่า

mysql -h remote_host -u user -p

  • แล้วได้ error ดังหัวเรื่อง

Authentication plugin 'caching_sha2_password' cannot be loaded

  • แต่ลองทดสอบ remote  connect ด้วย navicat client กลับเชื่อมต่อได้ซะงั้น
  • ทดสอบบน window เครื่องอื่น ก็ได้ error แบบเดียวกัน
  • สรุปคือ MySQL ตอนสร้าง user และ password ค่าเริ่มต้นการเข้ารหัสจะเป็น sha2 แน่เลย
  • ซึ่งทำให้ mysql client ที่ใช้ version เก่าอยู่ไม่มีตัว plugin sha2 authen แน่ๆ เลย
  • แก้ปัญหาโดย เปลี่ยนการ authen ของ user นั้นเป็นแบบ standard

Solved

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newrootpassword';

Ref

  • https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded

Install Java SKD 11 on MacOS ARM

  • ประเด็นคือเขียน flutter โดยใช้ Android Studio  จะติดตั้งบน Android Mobile debug mode
  • แต่ฟ้องล้มเหลวประมาณว่า ต้องการ java 11 ซะงั้น 

Step

$ brew install java11

  • path ที่ติดตั้งน่าจะอยู่ประมาณ /opt/openjdk11 ประมาณนี้
  • ตั้งค่าให้เลือกใช้ได้แบบ global ประมาณนี้

$ sudo ln -sfn /opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

  • ตรวจสอบเวอร์ชั่น java

$ java --version

Ref

  • https://medium.com/@kirebyte/using-homebrew-to-install-java-jdk11-on-macos-2021-4a90aa276f1c

CLI HTTP and API testing client for the API era.

  • ประเด็น ใช้ curl บน ubuntu 22.04 แล้วคิดว่ามันเอ๋อ (จริง เป็นที่โค้ดตัวเองเน้นๆ ที่มั่วเอง)
  • เลยลองหา cli http client มาใช้ทดสอบดูสิ ว่าได้ผลลัพธ์แบบ curl หรือป่าว
  • สรุปคือได้ผลเหมือนกันกับ curl แต่ก็ดีมี tool ตัวอื่น ไว้ใช้อีกตัว ง่ายๆ เหมือน curl

Install on ubuntu 22.04

$ snap install httpie

Usage ex

$ https httpie.io/hello

$ http PUT pie.dev/put X-API-Token:123 name=John

$ http -f POST pie.dev/post hello=World

Ref

  • https://httpie.io/cli

Monday, February 12, 2024

How to Execute a POST Request with JSON Payload with cURL

  • ทดสอบใช้ CURL บน linux Ubuntu 22.04 เพื่อทดสอบ Restfull api

Pattern

curl -X POST [URL] -H "Content-Type: application/json" -d [JSON_PAYLOAD]

Ex

curl -X POST http://example.com/api/data -H "Content-Type: application/json" -d '{"name": "John Doe", "age": 25}'

curl -X POST http://example.com/api/data -H "Content-Type: application/json" -d @data.json
Ref

  • https://tecadmin.net/post-json-data-with-curl-command/
  • https://www.linode.com/docs/guides/curl-for-rest-api/

Thursday, February 1, 2024

Add Multiple Hosts in phpMyAdmin

  • ปกติเราจะติดตั้ง phpmyadmin ไว้กับเครื่องที่มีฐานข้อมูลอยู่
  • แต่อยากใช้ phpmyadmin กับ remote host อื่นๆ ด้วย

Env

  • Ubuntu 22.04 + Nginx + PHP 8.3 + MySQL 
  • phpmyadmin 5.2.1

Method

  • ดาวน์โหลด zip file จาก https://www.phpmyadmin.net/downloads/ 
  • นำไปวางและแตกไฟล์ไว้ /var/www/html/phpmyadmin
  • จากนั้น คัดลอกไฟล์ชื่อ config.sample.inc.php  -> config.inc.php
  • แล้วเพิ่มประมาณนี้

  • ทดสอบระบบ http://localhost/phpmyadmin

Ref

  • https://tecadmin.net/add-multiple-hosts-in-phpmyadmin/

Tuesday, January 9, 2024

node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)

$ node -v

node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)

Solved

  • ปัญหาคือ Ubuntu version เราไม่ support nodejs v 20
  • ทางแก้คือ upgrade os ubuntu ให้สูงกว่า 18.04
  • หรือ เปลี่ยน nodejs กลับไปเป็น version 16 คือเก่า ในที่นี้เราจะใช้ nvm (ตัวติดตั้งโดยเลือก เวอร์ชั่นที่เราต้องการได้เลย ) ติดตั้งและตั้งค่าไปใช้อันที่ติดตั้งใหม่
  • ขั้นแรกต้องลง nvm ให้ระบบเราก่อน

$ sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

$ sudo nano $HOME/.bashrc

  • เพิ่มไว้ด้านล่างสุดของไฟล์ .bashrc

check=' export NVM_DIR="$HOME/.nvm"'

if ! grep -qF "$check" ~/.bashrc; then

    echo "" >>~/.bashrc

    echo "# Add NVM to path" >>~/.bashrc

    echo 'export NVM_DIR="$HOME/.nvm"' >>~/.bashrc

    echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >>~/.bashrc

    echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >>~/.bashrc

fi

  • จากนั้นใช้ สลับกลับไปใช้อันเดิมโดย (เราจะได้  16 -> 16.20.2)

$ nvm install 16 

$ nvm use 16

Add

  • ถ้าเราต้องใช้ติดตั้ง node lts version ล่าสุดใช้คำสั่ง 

$ nvm install --lts

  • ติดตั้งโดยระบุเวอร์ชั่น ล่าสุดของ 16 -> 16.20.2

$ nvm install 16

  • หรือติดตั้งระบุเวอร์ชั่นแบบระบุ 16.15.1 (Ubuntu 18.04 apt install nodejs จะได้เวอร์ชั่นนี้)

$ nvm install 16.15.2

  • กรณีสลับ version การ node ที่เราได้ติดตั้งไว้แล้วในระบบคือ

$ nvm use 16.15.1

$ nvm use 18 (อันนี้ก็ใช้ใน Ubuntu 18.04 ไม่ได้เช่นกัน)

$ nvm use 20

  • เช็ค GLIB ของ OS เราด้วยคำส่ง

$ ldd --version

Ref

  • https://stackoverflow.com/questions/72921215/getting-glibc-2-28-not-found

Resetting an out-of-range resolution Ubuntu 22.04

ปัญหา

  • ใช้ XORG Desktop  แล้วปรับ resolution สูงเกินไป monitor แสดง out-of-range resolution 
  • พอ restart ขึ้นหน้า login เข้า XORG Desktop มันก็แสดง resolution out of range เหมือนเดิม
  • ประเด็นที่ต้องใช้ XORG อยู่คือ Wayland ใช้ Shutter กับ Barrier มันไม่เสถียร เลย

Solved

Method 1 ใช้ Wayland แทน 

  • เข้าหน้า login แล้วเลือก Wayland Desktop แทน

Method2 ถ้าจะใช้ XORG Desktop เหมือนเดิม 

  • พอเข้าหน้า Login ให้สลับ shell โดยกดปุ่ม Ctrl+Alt+F2
  • login  CLI ด้วย user และ password ที่เราใช้เข้าระบบ  และ ลบ ~/.config/monitors.xml

$ rm ~/.config/monitors.xml

$ sudo reboot 

Ref

  • https://wiki.ubuntu.com/X/Config/Resolution

Tuesday, January 2, 2024

How to secure MongoDB with username and password

  • อ้างอิงบน Mogodb 6.0.12 ($ mongos --version)
  • คอนฟิกให้ remote ด้วย user & password จาก host ใหนก็ได้

$ sudo cp /etc/mongod.conf /etc/mongod/conf.old

$ sudo nano /etc/mongod.conf

......

# enable authen username & password

security:

  authorization: enabled

..........

# allow any remote

net:

    # bindIp: 127.0.0.1,192.168.1.0/24

    bindIp: 0.0.0.0

  • เพิ่ม User ผูกกับ db นั้น
  • โดยจัดการอยู่ที่  mogodb server ใช้ mongosh

$ mongosh

> use admin

> db.createUser({

  user: "myadmin",

  pwd: "password",

  roles: [ { role: "root", db: "mydb" } ]

}) 

  • ทดสอบ remote mongodb จาก client เครื่องอื่น

$ mongosh --host IPMongodb --port 27017 -u "myadmin" -p "password" --authenticationDatabase "mydb"

Ref

  • https://stackoverflow.com/questions/4881208/how-to-secure-mongodb-with-username-and-password
  • https://tecadmin.net/how-to-install-mongodb-on-ubuntu-22-04/

Popular Posts