GALAT 1044 (42000): Akses ditolak untuk pengguna '' @ 'localhost' ke basis data 'db'

164

Saya ingin mulai menulis pertanyaan di MySQL.

show grants menunjukkan:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

Saya tidak memiliki id pengguna tetapi ketika saya ingin membuat pengguna saya tidak memiliki privilleges, saya juga tidak tahu bagaimana membuat privilege ketika bahkan saya tidak memiliki satu pengguna!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

Saya mencoba masuk sebagai root:

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1
Nickool
sumber
3
Anda harus masuk sebagai pengguna dengan izin. Setidaknya rootseharusnya dibuat ketika Anda menginstal MySQL.
derobert
selama instalasi itu memberitahu saya untuk mengatur kata sandi dan saya mengaturnya untuk me-root sekarang apa yang bisa saya lakukan?
Nickool
9
Anda harus masuk sebagai root — misalnya, dengan menjalankan mysql -u root -p. Kemudian Anda akan memiliki izin penuh di server database, dan Anda dapat membuat pengguna lain.
derobert
ketika Anda masuk menggunakan baris perintah, lakukan hal berikut untuk masuk sebagai root: mysql -u root -p
Travis
1
@nikparsa: Tidak, Anda akan menjalankannya alih-alih 'mysql' — dari prompt shell, bukan pada prompt mysql.
derobert

Jawaban:

219

Tidak, Anda harus menjalankan mysql -u root -pdalam bash, bukan pada baris perintah MySQL. Jika Anda berada di mysql, Anda dapat keluar dengan mengetikkan exit .

Tidak Memangnya kenapa
sumber
bagaimana saya bisa pergi ke bash? Saya punya masalah menginstal mysql lihat di sini superuser.com/questions/377679/... Saya hanya tahu abt di command line
Nickool
6
gunakan 'berhenti' untuk keluar dari mysql, maka Anda akan di bash
Sekarang
23
FYI secara default kata sandi kosong
bigpotato
Bagaimana jika saya menggunakan windows?
PHPFan
keluar atau keluar tidak berfungsi untuk saya, berikan cara lain. Saya di jendela 10
Metin Dagcilar
46

Anda mungkin perlu mengatur akun root untuk database MySQL Anda:

Dalam jenis terminal:

mysqladmin -u root password 'root password goes here'

Dan kemudian memanggil klien MySQL:

mysql -h localhost -u root -p
soleshoe
sumber
1
Yang ini bekerja untuk saya, awalnya bekerja dengan baik dan tiba-tiba berhenti bekerja suatu hari. Ada ide, mengapa ini terjadi?
mu 無
@soleshoe im mendapatkan kesalahan: sudo: mysqladmin: perintah tidak ditemukan tolong bantu saya apa yang bisa saya lakukan ?? mysql sedang berjalan di System Preference.
Hitarth
29

Saya dibawa ke sini oleh masalah yang berbeda. Setiap kali saya mencoba masuk, saya mendapat pesan itu karena alih-alih mengautentikasi dengan benar, saya masuk sebagai pengguna anonim. Solusi untuk masalah saya adalah:

Untuk melihat pengguna mana Anda, dan yang memiliki izin yang Anda miliki:

select user(), current_user();

Untuk menghapus pengguna anonim sial:

drop user ''@'localhost';
Lefteris E
sumber
1
Ini memecahkan masalah bagi saya meskipun saya menggunakan "mysql -u username -p". Sangat aneh: user () adalah nama pengguna saya, tetapi current_user () adalah localhost ... tidak tahu mengapa?
ethanpil
2
@Leftteris hai .. saya mendapatkan kesalahan ini: Akses ditolak; Anda memerlukan (setidaknya satu dari) hak istimewa CREATE USER untuk operasi ini Ketika saya mencoba untuk menghapus '' @ 'localhost' pengguna;
Hitarth
15

Ini ada hubungannya dengan izin pengguna. Memberikan hibah yang tepat akan menyelesaikan masalah ini.

Langkah [1]: Buka terminal dan jalankan perintah ini

$ mysql -uroot -p

Output [1]: Ini akan memberi Anda prompt mysql yang ditunjukkan di bawah ini

masukkan deskripsi gambar di sini

Langkah 2]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

Sintaksis:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

catatan:

  • nama host dapat berupa alamat IP, localhost, 127.0.0.1
  • Dalam database_name/ table_name, * berarti semua basis data
  • Di hostname, untuk menentukan semua host gunakan '%'

Langkah [3]: Keluar dari prompt mysql saat ini dengan memasukkan quit/ exitmemerintahkan atau tekan Ctrl+D.

Langkah [4]: ​​Masuk ke pengguna baru Anda

$ mysql -uparsa -pyour_password

Langkah [5]: Buat database

mysql> create database `database_name`;
theBuzzyCoder
sumber
ketika saya lakukan di CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';sana mendapatkan kesalahan: KESALAHAN 1227 (42000): Akses ditolak; Anda memerlukan (setidaknya satu dari) hak istimewa CREATE USER untuk operasi ini
pesawat
Sudahkah Anda masuk ke klien mysql menggunakan pengguna root
theBuzzyCoder
9

Anda mungkin ingin mencoba perintah masuk lengkap:

mysql -h host -u root -p 

di mana tuan rumah akan berada 127.0.0.1.

Lakukan ini hanya untuk memastikan adanya kerja sama.

Menggunakan mysql -u root -pmemungkinkan saya untuk melakukan banyak pencarian basis data, tetapi menolak pembuatan basis data apa pun karena pengaturan jalur.

sinar
sumber
6

Pertama, jika Anda tidak terbiasa dengan baris perintah, coba gunakan phpmyadmin dari browser web Anda. Ini akan memastikan Anda benar-benar membuat database mysql dan nama pengguna.

Ini adalah bagaimana Anda terhubung dari baris perintah (bash):

mysql -h hostname -u username -p database_name

Sebagai contoh:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb
fabiog
sumber
1
-padalah kata sandi dan Anda menggunakannya untuk memberikan nama basis data. Juga, untuk kata sandi, seharusnya tidak ada spasi b / w -pdan kata sandi yang sebenarnya. Gunakan -Duntuk terhubung ke database tertentu.
sv.
5

Jika Anda berada di MySQLshell, keluar dengan mengetikkan exit , yang akan mengembalikan Anda ke command prompt.

Sekarang mulailah MySQLdengan menggunakan persis perintah berikut:

sudo mysql -u root -p

Jika nama pengguna Anda adalah sesuatu selain dari root, ganti 'root' pada perintah di atas dengan nama pengguna Anda:

sudo mysql -u <your-user-name> -p

Ini kemudian akan menanyakan MySQLakun / kata sandi Anda, dan Anda MySQLtidak akan menunjukkan masalah hak akses apa pun saat itu.

Kshitij Mittal
sumber
setelah memasukkan kata sandi, saya mendapatkan "sudo: mysql: command not found" Tolong bantu saya dalam hal ini
Hitarth
seharusnya bukan "sudo:", itu harus "sudo" ... Jika itu bukan kesalahan ketik, saya pikir ini masalahnya.
Kshitij Mittal
2

@Nickparsa… Anda memiliki 2 masalah:

1). mysql -uroot -p harus diketik dalam bash (juga dikenal sebagai terminal Anda) bukan di baris perintah MySQL. Anda memperbaiki kesalahan ini dengan mengetik

exit

di baris perintah MySQL Anda. Sekarang Anda kembali ke bash / terminal command-line Anda.

2). Anda memiliki kesalahan sintaksis:

mysql -uroot -p; 

titik koma di depan -p harus pergi. Sintaks yang benar adalah:

mysql -uroot -p

ketik sintaks yang benar di bash commandline Anda. Masukkan kata sandi jika Anda memiliki satu pengaturan; lain cukup tekan tombol enter. Anda harus mendapatkan respons yang mirip dengan ini: masukkan deskripsi gambar di sini

Semoga ini membantu!

Uzzar
sumber
Hai, saya mendapat layar surut langsung setelah menjalankan commend ini. / usr / local / mysql / bin / mysql tetapi setelah itu ketika saya mencoba membuat database menggunakan "CREATE DATABASE books;" saya mendapatkan error: ERROR 1044 (42000): Akses ditolak untuk pengguna '' @ 'localhost' ke database ' buku 'tolong bantu saya
Hitarth
0

Sebagian besar Pengembang masuk ke server (saya berasumsi Anda memiliki nama pengguna dan kata sandi untuk basis data mysql) kemudian dari Bash mereka beralih untuk mysql> promptkemudian menggunakan perintah di bawah ini (yang tidak berfungsi

mysql -h localhost -u root -p

Apa yang perlu dilakukan adalah menggunakan perintah di atas dalam bash prompt -> pada saat melakukan hal itu akan meminta kata sandi jika diberikan akan langsung dibawa ke prompt mysql dan

lalu database, tabel bisa dibuat satu per satu

Saya menghadapi jalan buntu yang serupa sehingga berbagi pengalaman

Setan
sumber
0

Saya memiliki perintah yang benar per jawaban di atas, apa yang saya lewatkan ada di Workbench, di mana kami menyebutkan 'Batasi Konektivitas dari Host' untuk pengguna, itu default ke "%" - ubah ini menjadi "localhost" dan terhubung dengan baik sesudahnya!

membunuh kesenangan
sumber