Install MySQL
sudo apt-get updatesudo apt-get install mysql-serversudo mysql_secure_installation utilityUtilitas ini meminta Anda untuk menentukan kata sandi root mysql dan opsi terkait keamanan lainnya, termasuk menghapus akses jarak jauh ke pengguna root dan mengatur kata sandi root.
Setup MySQL
sudo mysql -u rootketikan ini di mysql server
USE mysql;UPDATE user SET plugin='mysql_native_password' WHERE User='root';Jika ingin menambahkan password ikuti langkah dibawah, jika tidak lompati langkah dibawah ini langsung Flush Privileges
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';FLUSH PRIVILEGES;ketikan ini di command line
sudo service mysql restartIzinkan Remote akses
Jika Anda memiliki iptables yang diaktifkan dan ingin terhubung ke database MySQL dari komputer lain, Anda harus membuka port di firewall server Anda (port default adalah 3306). Anda tidak perlu melakukan ini jika aplikasi yang menggunakan MySQL berjalan di server yang sama.
sudo ufw enablesudo ufw allow mysqlStart the MySQL service
sudo systemctl start mysqlLaunch at reboot
sudo systemctl enable mysqlConfigure interfaces
bind-address = 127.0.0.1 ( The default. )
bind-address = XXX.XXX.XXX.XXX ( The ip address of your Public Net interface. )
bind-address = ZZZ.ZZZ.ZZZ.ZZZ ( The ip address of your Service Net interface. )
bind-address = 0.0.0.0 ( All ip addresses. )Erorr Permission
Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
GRANT PROCESS ON *.* TO someuser@localhost;Select command denied to user userid@ip-address for table table-name
GRANT SELECT ON performance_schema.* TO someuser@localhost WITH GRANT OPTION;Access denied you need (at least one of) the super, replication client privilege(s) for this operation
GRANT SUPER ON *.* TO user1@localhost;Access denied you need (at least one of) the backup_admin privilege(s) for this operation
GRANT BACKUP_ADMIN ON *.* TO 'hard'@'localhost';Start the mysql shell
mysql -u root -pError MySQL
Coba jalankan dibawah ini
sudo chown mysql:mysql -R /var/log/mysqlsudo chmod -R u+rwx /etc/mysql/sudo chown -R mysql.mysql /etc/mysql/ERROR 1055 (42000)
ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'data_siswa.siswa.nama_siswa' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_byketikan ini di mysql servernya
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));Uninstall MySQL
Re-install MySQL Server
Berikut langkahnya :
sudo apt-get purge mysql-server mysql-common mysql-clientsudo apt-get install mysql-client mysql-server mysql-commonConfigure MySQL
Show user
SELECT user FROM user.mysql;Show Hak Akses
SHOW GRANTS FOR 'coba'@'localhost';Show level privileges
desc mysql.db;Set the root password
ketikan ini di dalam mysql server
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Kemudian, jalankan FLUSH PRIVILEGES yang memberi tahu server untuk memuat ulang tabel dan menerapkan perubahan baru Anda:
FLUSH PRIVILEGES;Allow IP Address
edit file sudo nvim /etc/mysql/my.cnf
[mysqld]
bind-address = 0.0.0.0masuk ke mysql server lalu jalankan perintah
CREATE USER 'hard'@'192.168.x.x' IDENTIFIED BY 'password';GRANT ALL PRIVILEGES ON `java`.* TO `hard`@`192.168.x.x` WITH GRANT OPTION;Buat User Baru
ketika ini di my sql server
CREATE USER 'hard'@'localhost' IDENTIFIED BY 'password';Hak Akses user
ketikan ini di my sql server
GRANT ALL PRIVILEGES ON NAMA_DATABASE . NAMA_TABEL TO 'hard'@'localhost' WITH GRANT OPTION;Cabut Hak Akses
ketikan ini di mysql server
REVOKE ALL PRIVILEGES ON NAMA_DATABASE . NAMA_TABEL FROM 'coba'@'localhost';Option Hak Akses
ALL PRIVILEGES- seperti yang kita lihat sebelumnya, ini akan memungkinkan pengguna MySQL akses penuh ke database yang ditunjuk (atau jika tidak ada database yang dipilih, akses global di seluruh sistem).CREATE- memungkinkan mereka untuk membuat tabel atau database baru.DROP - memungkinkan mereka untuk menghapus tabel atau database.DELETE - memungkinkan mereka untuk menghapus baris dari tabel.INSERT - memungkinkan mereka untuk memasukkan baris ke dalam tabel.SELECT - memungkinkan mereka untuk menggunakan perintah SELECT untuk membaca database.UPDATE - memungkinkan mereka untuk memperbarui baris tabel.GRANT OPTION - memungkinkan mereka untuk memberikan atau menghapus hak pengguna lain.
Melihat Detail User
ketikan ini di mysql server
SELECT * FROM mysql.user;SELECT host, user, password FROM mysql.user;DESC mysql.user;Hapus User
drop user coba@localhost;Reload
ketikan ini di mysql server
FLUSH PRIVILEGES;Reset the MySQL/MariaDB Root Password
Untuk set root :
sudo mysqladmin --user=root password "newpassword"Untuk reset password :
sudo mysqladmin --user=root --password=oldpassword password "newpassword"Show Variable password
SHOW VARIABLES LIKE 'validate_password%';Show Status Connection
SHOW status WHERE `variable_name` = 'Threads_connected';or
SHOW processlist;Basic MySQL
Buat Tabel
CREATE TABLE `data` (
`id_dataSpasial` INT(11) NOT NULL AUTO_INCREMENT,
`batas_wilayah` VARCHAR(20),
`data_kejadian` VARCHAR(20),
PRIMARY KEY (`id_data`)
);Melihat Source Code
SHOW CREATE TABLE nama_table \GUntuk Melihat Struktur Tabel
DESC NamaTabel;Select Distinct
SELECT DISTINCT select_list
FROM table_name;Hapus Tabel
DROP TABLE namaTabel;Hapus FOREIGN KEY
ALTER TABLE NamaTabelSekarang
DROP FOREIGN KEY FK_NamaField;Hapus FOREIGN KEY (constraint)
ALTER TABLE NamaTabelSekarang
DROP CONSTRAINT FK_NamaField;Insert tabel
INSERT INTO nama_tabel (column1, column2, column3,...)
VALUES (value1, value2, value3,...)Update tabel
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_valueDelete data
DELETE FROM nama_tabel WHERE column = valueMisalkan :
DELETE FROM coba WHERE id = 1Alter Table on FOREIGN KEY
ALTER TABLE NamaTabelSekarang
ADD FOREIGN KEY (NamaField)
REFERENCES NamaTabelKunci(NamaField);Alter Table on FOREIGN KEY (constraint)
ALTER TABLE NamaTabelSekarang
ADD CONSTRAINT FK_NamaField
FOREIGN KEY (NamaField) REFERENCES NamaTabelKunci(NamaField);To many Connection
Batas & puncak pemakaian
SHOW PROCESSLIST;-- Batas maksimum koneksi MySQL
SHOW VARIABLES LIKE 'max_connections';-- Jumlah koneksi yang sedang terpakai
SHOW STATUS LIKE 'Threads_connected';-- Puncak koneksi tertinggi sejak server start
SHOW STATUS LIKE 'Max_used_connections';Total & koneksi aktif
-- Total koneksi saat ini
SELECT COUNT(*) AS total FROM information_schema.PROCESSLIST;-- Hanya yang aktif (bukan status 'Sleep')
SELECT COUNT(*) AS aktif FROM information_schema.PROCESSLIST WHERE COMMAND <> 'Sleep';-- Hanya yang 'Sleep' (menganggur)
SELECT COUNT(*) AS tidur FROM information_schema.PROCESSLIST WHERE COMMAND = 'Sleep';Hitung per user / host / database / state
-- Jumlah koneksi per user
SELECT USER, COUNT(*) AS jumlah FROM information_schema.PROCESSLIST GROUP BY USER ORDER BY jumlah DESC;Koneksi dengan durasi terlama (Top N)
-- Urutkan sesi yang paling lama aktif
SELECT ID, USER, HOST, DB, COMMAND, STATE, TIME, INFO FROM information_schema.PROCESSLIST ORDER BY TIME DESC LIMIT 10;Menghentikan koneksi tertentu (hati-hati!)
KILL <PID>;-- Jumlah koneksi per host
SELECT HOST, COUNT(*) AS jumlah FROM information_schema.PROCESSLIST GROUP BY HOST ORDER BY jumlah DESC;-- Jumlah koneksi per database
SELECT COALESCE(DB,'(null)') AS db, COUNT(*) AS jumlah FROM information_schema.PROCESSLIST GROUP BY DB ORDER BY jumlah DESC;-- Jumlah koneksi per state (mis. Waiting, Sending data, dll.)
SELECT COALESCE(STATE,'(null)') AS state, COUNT(*) AS jumlah FROM information_schema.PROCESSLIST GROUP BY STATE ORDER BY jumlah DESC;Limit Data
SELECT * FROM nama_tabel LIMIT 30BruteForce phpmyadmin
curl https://raw.githubusercontent.com/safflower/phpmyadmin-authentication-bruteforce/master/main.py > main.pypython3 main.py -url http://example.com/pma/ -user root -dict password.txtBisa dilihat link dibawah ini : https://github.com/safflower/phpmyadmin-authentication-bruteforce
Backup MySQL
mysqldump -u USERNAME -p PASSWORD NAMA_DATABASE --ignore-table=NAMA_TABEL > backup_database.sql