วันศุกร์ที่ 11 ตุลาคม พ.ศ. 2562

ลง mysql ใน rpi

ให้ทำตามด้านล่าง ใต้คำว่า "จบ" ก่อน แล้วค่อยมาทำตรงนี้ต่อ แต่ว่ามันจะมั่วๆหน่อย โชคดีผีกัดหัว

 sudo mysql -u root -p
ให้ใส่ password = อะไรก็ได้ แต่จำให้ได้ล่ะ

GRANT ALL PRIVILEGES ON *.* TO pi@localhost IDENTIFIED BY 'อะไรก็ได้ แต่จำให้ได้ล่ะ'

ตอนนี้เราจะสามารถเข้า mysql ได้ ด้วยคำสั่งนี้
mysql -u pi -p
แล้วก็ใส่ password ไป

create database test_db;
use test_db;
create table gpio_input ( id int, part_number varchar(20), date_time varchar(20), rpi_name varchar(20), primary key (id) );
show tables;
create table rpi_name ( id int, name varchar(20), primary key (id) );

insert into gpio_input (id, part_number, date_time, rpi_name) values (1, "000001" , "10/09/2019", "rpi1");
\quit;

************ เขียน qt ติดต่อ mysql ภายในตัวเอง ************************
ดูตามนี้
https://www.youtube.com/watch?v=yxy0yvZnX1Y
แต่เจอปัญหา  qsqldatabase: qmysql driver not load แก้ได้ด้วยติดตั้งคำสั่งนี้
sudo apt-get install libqt5sql5-mysql

จบ
================================================================

ที่อยู่ด้านล่างหลังจากนี้ คือที่ทำไว้ก่อนหน้านี้ แต่ไม่สำเร็จ แต่ก็ไม่อยากลบ

มือใหม่หัดเล่น database ครับ เขามีไรสอนบนเวป ก็เอาอันนั้นล่ะ ก็เลยเลือก mysql มาเป็นฐานข้อมูล

เริ่มจาก

sudo apt-get install  mysql-server
ระหว่างลงโปรแกรม จะเจอคำถามให้ใส่ password ก็ใส่ๆไป

ถ้าอยากแก้ไขรหัสผ่าน
sudo mysqladmin -u root password 'newpass'


ถ้าต้องการตรวจสอบว่าฐานข้อมูลเปิดอยู่รึเปล่า ให้ใช้คำสั่งต่อไปนี้
sudo netstat -tap | grep mysql 

ถ้าโปรแกรม mysql เปิดอยู่ ควรจะเห็นอะไรคล้ายๆนี้
tcp        0      0 localhost:mysql         *:*                LISTEN      2556/mysqld

แต่ถ้า mysql ไม่ start อยู่ ให้ใช้คำสั่งต่อไปนี้
sudo service mysql restart

ตั้งค่า configure เบื้องต้น
ให้เราเข้าไปที่ /etc/mysql/my.cnf ถ้าเราต้องการให้ฐานข้อมูลสามารถอ่านจาก network ได้ ให้เข้าไปแก้ bind-address
bind-address = 192.168.1.10

หรือถ้าไม่มีอยู่ใน my.cnf ก็ให้เข้ามาดูในนี้แทน
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
แล้วแก้ไขจาก
bind-address =  127.0.0.1 ให้เป็น
bind-address = 0.0.0.0
**** ใช้ _ แทน - ****
เสร็จแล้ว  ให้ทำตามนี้ เพื่อให้เครื่องอื่น(ตามที่ระบุ) สามารถเข้ามาใช้งาน database ได้

Grant access to a database user

  1. Log in to the database server.
  2. Connect to the MySQL database as the root user.
  3. Enter the following command:
    GRANT ALL ON <local database name>.* TO <remote web node username>@<remote web node server ip address> IDENTIFIED BY '<database user password>';
    
For example,
GRANT ALL ON RTKS_database.* TO rtks@192.168.1.108 IDENTIFIED BY 'password';

ip 192.168.1.108 = remote machine
ip 192.168.1.110 = server machine

Verify database access

On your remote machine, enter the following command to verify the connection works:
mysql -u <local database username> -h <database server ip address> -p
For example,
mysql -u rtks -h 192.168.1.110 -p

แล้วก็ใส่ password ตามที่ตั้งไว้

 
https://devdocs.magento.com/guides/v2.3/install-gde/prereq/mysql_remote.html

หลังจากแก้ไข my.cnf ให้ restart service ดังนี้
sudo service mysql restart

 เข้าใช้งาน mysql ครั้งแรก
mysql -u root -p
หมายถึง user root no password
จะเห็น version 5.6.25

พิมพ์ exit เพื่อออก

แต่ถ้าในกรณีที่เราเข้า mysql -u root -p แล้วขึ้นว่า
mysqladmin: connect to server at 'localhost' failed error:
'Access denied for user 'root'@'localhost' (using password: YES)'
ให้ทำดังนี้
  1. Open & Edit sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  2. Add skip-grant-tables under [mysqld]
  3. Restart Mysql, sudo /etc/init.d/mysql stop, sudo /etc/init.d/mysql start
  4. You should be able to login to mysql now using the below command mysql -u root -p
  5. use mysql;
    update user set authentication_string=PASSWORD("") where User='root';
    update user set plugin="mysql_native_password" where User='root';  # THIS LINE
    
    flush privileges;
    quit;
  6. Go back to /etc/mysql/mysql.conf.d/mysqld.cnf and remove/comment skip-grant-tables
  7. Restart Mysql, sudo /etc/init.d/mysql stop, sudo /etc/init.d/mysql start
  8. Now you will be able to login with the new password mysql -u root -p
 ที่มา
https://stackoverflow.com/questions/41645309/mysql-error-access-denied-for-user-rootlocalhost
และ
https://stackoverflow.com/questions/37879448/mysql-fails-on-mysql-error-1524-hy000-plugin-auth-socket-is-not-loaded


แต่ถ้าไม่ถนัดในการใช้ terminal ก็มีทางเลือกคือ
ให้เข้า software center แล้วลง mysql workbench
เมื่อลงเสร็จแล้ว คลิกที่หน้าแรก ก็จะเข้าไปเจอหน้า local instance
ลองสร้าง database ใหม่ ชื่อ test, utf8-default collation กด apply
ก็จะมี database ก้อนใหม่ให้เห็นที่ด้านล่างซ้ายมือ
ให้คลิกขวาที่ database แล้วเลือกเป็น set as default schema
create new table ที่เมนูด้านบน
ก็จะให้สร้าง table ใหม่ ก็ใส่ชื่อลงไป
คลิกที่ด้านล่าง column name ก็ใส่ชื่อ column ลงไป กำหนดให้เป็น type อย่างที่ต้องการ
ถ้าต้องการใส่ข้อมูล ให้คลิกขวาที่ table(เมนูด้านซ้าย) แล้วเลือก select rows
ลองเล่นกันดูแล้วกัน คร่าวๆแค่นี้

และเมื่อเราจะเริ่ม project qt ให้เราเพิ่มใน .pro ด้วย sql
เช่น QT += sql


แต่ลงไปลงมา เขียนโค้ด ใช้ไม่ได้ เลยไปลง sqlite3 แทนดีกว่า




 ที่มา : https://help.ubuntu.com/12.04/serverguide/mysql.html

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

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