Kumpulan Cheatsheet Mysql November 07, 2022 Reading time ~4 minutes Cheatsheet MySQL # Mengizinkan MySQL client untuk menghubungkan ke Remote Host mysql -u root -p Enter password: mysql> use mysql mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password'; mysql> FLUSH PRIVILEGES; # MySQL Database Dump mysqldump -u user -p db-name > db-name.out # Delete MySQL Data dari table # Ada dua cara untuk menghapus semua data dalam tabel database MySQL. TRUNCATE TABLE tablename; # Ini akan menghapus semua data dalam tabel dengan sangat cepat. Di MySQL tabel sebenarnya didrop dan dibuat ulang, karenanya kecepatan kueri. Jumlah baris yang dihapus untuk tabel MyISAM yang dikembalikan adalah nol/kosong; untuk INNODB ia mengembalikan nomor aktual yang dihapus. DELETE FROM tablename; # Ini juga menghapus semua data dalam tabel, tetapi tidak secepat menggunakan metode "TRUNCATE TABLE". Di MySQL >= 4.0 jumlah baris yang dihapus dikembalikan; di MySQL 3.23 angka yang dikembalikan selalu nol. # Mengekspor Skema/Struktur DB (tanpa data) saja mysqldump -u root -p --no-data dbname > schema.sql # Backup Multiple Database mysqldump –u[user name] –p[password] [database name 1] [database name 2] .. > [dump file] # Backup ALL Database shell> mysqldump –u[user name] –p[password] –all-databases > [dump file] # Backup Specific Table in a Database shell> mysqldump --user [username] --password=[password] [database name] [table name] > /tmp/sugarcrm_accounts_contacts.sql # Restoring MySQL Database shell> mysql --u [username] --password=[password] [database name] < [dump file] # Export Database ke format Zipped (.gz) mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | gzip > /home/USERNAME/backups-mysql/BACKUP.gz # Optimize Single Database: ./mysqlcheck -o database_name # Optimize All Databases: ./mysqlcheck -o -A ./mysqlcheck -o --all-databases # Analyze Single Database: ./mysqlcheck -a database_name # Analyze All Databases: ./mysqlcheck -a -A ./mysqlcheck -a --all-databases Repair Single Database: ./mysqlcheck -r database_name # Repair All Databases: ./mysqlcheck -r -A ./mysqlcheck -r --all-databases # Importing & Exprting a Table from Database # Export mysqldump -p - -user=username dbname tableName > tableName.sq # Import mysql -u username -p -D dbname < tableName.sql # MySQL Drop Table mysql> use database 'yourdbname'; mysql> drop table 'yourtablename'; # View MySQL users and privileges mysql> select user,host from mysql.user; mysql> show grants for 'root'@'%'; mysql> select * from mysql.user; mysql> desc mysql.user; select host, user, password from mysql.user; # Cara Membuat User MySQL Baru CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; # Hal pertama yang harus dilakukan adalah memberi pengguna akses ke informasi yang di butuhkan. GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost'; # Setelah Anda menyelesaikan izin yang ingin Anda siapkan untuk pengguna baru Anda, selalu pastikan untuk memuat ulang semua hak istimewa. FLUSH PRIVILEGES; # Cara Memberikan Izin Pengguna MySQL # Berikut adalah daftar singkat dari pemberian izin umum MySQL lainnya yang dapat dinikmati oleh user MySQL. # ALL PRIVILEGES - seperti yang kita lihat sebelumnya, ini akan memungkinkan pengguna MySQL semua akses ke database yang ditunjuk (atau jika tidak ada database yang dipilih, di seluruh sistem) # CREATE - memungkinkan untuk membuat tabel atau database baru # DROP - memungkinkan untuk menghapus tabel atau database # DELETE - memungkinkan untuk menghapus baris dari tabel # INSERT - memungkinkan untuk memasukkan baris ke dalam tabel # SELECT - memungkinkan untuk menggunakan perintah Select untuk membaca database # UPDATE - izinkan memperbarui baris tabel # GRANT OPTION - memungkinkan untuk memberikan atau menghapus hak istimewa pengguna lain # Untuk memberikan izin kepada pengguna tertentu, Anda dapat menggunakan kerangka kerja ini : GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’; # Jika Anda ingin memberi akses ke database atau tabel apa pun, pastikan untuk meletakkan tanda bintang (*) di tempat nama database atau nama tabel. Setiap kali Anda memperbarui atau mengubah izin, pastikan untuk menggunakan perintah Flush Privileges. # Jika Anda perlu mencabut izin, strukturnya hampir sama dengan pemberiannya: REVOKE [type of permission] ON [database name].[table name] FROM ‘[username]’@‘localhost’; # Sama seperti Anda dapat menghapus database dengan DROP, Anda dapat menggunakan DROP untuk menghapus pengguna juga: DROP USER ‘demo’@‘localhost’; # Jalankan OPTIMIZE TABLE untuk mendefrag tabel untuk kinerja yang lebih baik mysqlcheck -u username -p --auto-repair --optimize --all-databases # Dapatkan ukuran Database MySQL dalam MB SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema; # LANJUTAN # BACKUP ALL DATABASE mysqldump -u root -p --all-databases | gzip -9 > alldb_backup_db_name_19_06_2022.gz # BACKUP ALL DATABASE - SINGLE TRANSACTIONS WITHOUT LOCK_TABLES mysqldump --single-transaction -u root -p --all-databases | gzip -9 > alldb_backup_db_name_19_06_2022_single_transactions.gz # BACKUP SPECIFIC DATABASE - SINGLE TRANSACTIONS VIA QUICK AND COMPRESS WITHOUT LOCK_TABLES mysqldump -v -h localhost --protocol=TCP -P 3306 -u root --compress --single-transaction --quick -pYourPasswdDB your_specific_db_name > specific_backup_db_name_19_06_2022_single_transactions.gz # RESTORE ALL DATABASE mysql -u root -p < alldb_backup_db_name_19_06_2022_single_transactions.sql # RESTORE ALL DATABASE (FORCE REPLACE EXISTING) mysql -f -u root -p < alldb_backup_db_name_19_06_2022_single_transactions.sql # BACKUP VIEWS cat alldb_backup_db_name_19_06_2022_single_transactions.sql | grep -A 3 "CREATE ALGORITHM" > backup_views_all_db_db_name_19_06_2022.sql # TROUBLESHOOTING 1. [RESTORE DB] mysqldump: Got error: 1449: "The user specified as a definer ('other_user'@'%') does not exist" when using LOCK TABLES Solusi : # mysql -u root -p --force < alldb_backup_db_name_19_06_2022_single_transactions.gz # In MySQL, how to return the week of the month? FLOOR((DayOfMonth("2023-02-01")-1)/7)+1 # Mysql how to get First Monday of given year and Month SET @firstday = '2023-01-01'; SELECT ADDDATE( @firstday , MOD((9-DAYOFWEEK(@firstday)),7)) as first_monday; Read More Cara Cloning Git Projet Berdasarkan Group ID Cara Cloning Git Projet Berdasarkan Group ID Continue reading Perbandingan Layanan Cloud Modern Saat Ini (Part 1) Published on July 29, 2023 Materi Persiapan Ujian Sertifikasi Oracle Cloud Infrastructure Architect 2023 Professional (1Z0-997-23) Published on July 29, 2023