Saya baru saja menghapus Mac saya dan menginstal El Capitan baru. Saya kesulitan untuk terhubung ke Mysql sekarang. Setelah melalui proses penyiapan server web, saya telah membuat file pengujian PHP sederhana:
<?php
$conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error;
else echo "Connected successfully";
phpinfo();
?>
Ketika saya menjalankannya, saya mendapatkan kesalahan ini:
Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.
Saya belum pernah melihat respons itu dari koneksi sebelumnya. Bagaimana cara memperbaikinya jika saya tidak dapat terhubung?
EDIT
Di terminal saya memasukkan perintah:
mysql -u root -p
Ini meminta saya untuk kata sandi saya (yang sekarang) yang saya masukkan. Sekarang saya memiliki akses ke perintah mysql tetapi apa pun yang saya coba menghasilkan kesalahan ini:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Bagaimana cara mereset kata sandi menggunakan ALTER USER
?
php
mysql
macos
osx-elcapitan
CaribouCode
sumber
sumber
/usr/local/mysql/bin/mysqladmin -u root -p password
Jawaban:
Jadi akhirnya saya menemukan solusinya sendiri.
Pertama saya pergi ke terminal dan mengetik:
mysql -u root -p
Ini meminta kata sandi saya saat ini yang saya ketik dan itu memberi saya akses untuk memberikan lebih banyak perintah mysql. Apa pun yang saya coba dari sini memberikan kesalahan ini:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Ini membingungkan karena saya tidak dapat benar-benar melihat cara menyetel ulang kata sandi menggunakan
ALTER USER
pernyataan, tetapi saya menemukan solusi sederhana lainnya:SET PASSWORD = PASSWORD('xxxxxxxx');
sumber
Pertama, saya menggunakan:
Memberikan kata sandi saya saat ini untuk 'root'. Lanjut:
mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
Ubah
'new_password'
ke kata sandi baru untuk 'root' pengguna.Itu memecahkan masalah saya.
sumber
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
mysqladmin -u [username] -p password
bekerja untuk saya di OS X El Capitan dan MySQL 5.7.12 Community Server. Contoh:$ /usr/local/mysql/bin/mysqladmin -u root -p password Enter password: New password: Confirm new password: Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
Ini mirip dengan jawaban pavan sachi, tetapi dengan petunjuk kata sandi.
Kesalahan saya adalah "# 1862 - Kata sandi Anda telah kedaluwarsa. Untuk masuk, Anda harus mengubahnya menggunakan klien yang mendukung kata sandi kedaluwarsa." di layar login phpMyAdmin pertama kali.
sumber
mysqladmin -u [username] -p password
Masa berlaku kata sandi MySQL
Mengatur ulang kata sandi hanya akan menyelesaikan masalah untuk sementara. Dari MySQL 5.7.4 hingga 5.7.10 (untuk mendorong keamanan yang lebih baik - lihat MySQL: Kebijakan Kedaluwarsa Kata Sandi ) nilai
default_password_lifetime
variabel default adalah 360 (1 tahun-ish). Untuk versi tersebut, jika Anda tidak membuat perubahan pada variabel ini (atau akun pengguna individu) semua sandi kedaluwarsa setelah 360 hari.Jadi dari skrip Anda mungkin mendapatkan pesan: "Kata sandi Anda telah kedaluwarsa. Untuk masuk, Anda harus mengubahnya menggunakan klien yang mendukung kata sandi yang kedaluwarsa."
Untuk menghentikan kadaluwarsa kata sandi otomatis, masuk sebagai root (
mysql -u root -p
), lalu, untuk klien yang secara otomatis terhubung ke server (mis. Skrip.) Ubah pengaturan kedaluwarsa kata sandi:ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;
ATAU Anda dapat menonaktifkan kata sandi otomatis kedaluwarsa untuk semua pengguna :
SET GLOBAL default_password_lifetime = 0;
Seperti yang ditunjukkan oleh Mertaydin di komentar, untuk membuat ini permanen, tambahkan baris berikut ke
my.cnf
file yang dibaca MySQL saat startup, di bawah[mysqld]
grup pengaturan. Lokasimy.cnf
tergantung pada pengaturan Anda (misalnya Windows, atau Homebrew di OS X, atau penginstal), dan apakah Anda menginginkan ini per pengguna di Unix atau global:[mysqld]
default_password_lifetime = 0
(Mungkin ada pengaturan lain di sini juga ...)Lihat dokumen MySQL tentang file konfigurasi .
sumber
Saya mengalami masalah yang sama baru-baru ini saat menginstal mysql di mac os x capitan. Saya tidak menemukan jawaban yang benar di sini, jadi menambahkan jawaban ini.
MySql dalam versi saat ini, menghasilkan kata sandi sementara saat Anda menginstal mysql. Gunakan kata sandi ini untuk menyetel kata sandi baru menggunakan utilitas mysqladmin seperti di bawah ini;
Semoga bisa membantu Anda dan orang lain.
sumber
Cukup unduh MySQL workbench untuk log in. Anda akan diminta untuk mengubah kata sandi dengan segera dan otomatis.
sumber
mulai MYSQL dalam mode aman
mysqld_safe --skip-grant-tables &
Hubungkan ke server MYSQL
jalankan perintah SQL untuk mengatur ulang kata sandi:
use mysql; SET GLOBAL default_password_lifetime = 0; SET PASSWORD = PASSWORD('new_password');
Langkah terakhir, restart layanan mysql Anda
sumber
saya telah menghadapi masalah ini beberapa hari yang lalu. Untuk solusi terbaik untuk versi 5.7 MySQL; masuk ke konsol mysql Anda dan ubah kata sandi Anda dengan perintah berikut:
ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
sumber
PERINGATAN: ini akan memungkinkan setiap pengguna untuk masuk
Saya harus mencoba sesuatu yang lain. Karena kata sandi root saya kedaluwarsa dan mengubah bukanlah pilihan karena
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
membekukan menambahkan
skip-grant-tables
bawah[mysqld]
dimy.cnf
dan restart mysql melakukan triksumber
Pada Windows di phpmyadmin, lihat Variables: default_password_lifetime, dan alihkan ke 0 (bukan 360), selamat menikmati.
Ini mungkin dari mySQL mengambil lagi 360 hari, jadi tambahkan my.ini:
[mysqld] default_password_lifetime=0
Dan restart mysql.
sumber
Ini berhasil untuk saya:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword','root'@'localhost' PASSWORD EXPIRE NEVER;
sumber
restart server MySQL dengan opsi --skip-grant-tables Dan kemudian atur kata sandi root baru
$ mysql -u root mysql> USE mysql; mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> quit
Sekarang jika Anda perlu, Anda dapat memperbarui tabel mysql.user (bidang password_expired = 'N') agar kata sandi tidak kedaluwarsa.
sumber
mysql -u root
saya mendapatkan kesalahan ini:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql -u root -p
kemudian meminta saya untuk kata sandi yang saya masukkan. Perintah Anda berikutnya tidak berfungsi untuk saya karena dikatakanYou must reset your password using ALTER USER statement before executing this statement.
Semua jawaban ini menggunakan konsol Linux untuk mengakses MySQL.
Jika Anda menggunakan Windows dan menggunakan WAMP, Anda dapat memulai dengan membuka konsol MySQL (
click WAMP icon->MySQL->MySQL console
).Kemudian itu akan meminta Anda untuk memasukkan kata sandi Anda saat ini, masukkan.
Dan kemudian ketik
SET PASSWORD = PASSWORD('some_pass');
sumber
solusi mudah terbaik:
[PATH MYSQL]/bin/mysql -u root [Enter password] SET GLOBAL default_password_lifetime = 0;
dan kemudian berfungsi dengan baik.
sumber
Ini bekerja untuk saya:
Sumber: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Login sebagai root:
dan kemudian Anda menonaktifkan kata sandi kedaluwarsa otomatis dari semua pengguna:
SET GLOBAL default_password_lifetime = 0;
sumber
Kedaluwarsa kata sandi adalah fitur baru di MySQL 5.6 atau 5.7.
Jawabannya jelas: Gunakan klien yang mampu mengubah kata sandi kedaluwarsa (saya pikir Sequel Pro dapat melakukannya).
Perpustakaan MySQLi jelas tidak dapat mengubah kata sandi yang kadaluwarsa.
Jika Anda memiliki akses terbatas ke localhost dan Anda hanya memiliki klien konsol, klien mysql standar dapat melakukannya.
sumber
Buka konsol MySQL dan ketik SET PASSWORD = 'kata sandi Anda'; dan kemudian tekan ENTER Key yang akan mengatur kata sandi yang Anda tentukan untuk root pengguna.
Anda hanya dapat menulis SET PASSWORD = ''; yang akan membuat kata sandi kosong untuk pengguna root.
sumber
Saya melakukan sesuatu seperti ini.
UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
sumber
You must reset your password using ALTER USER statement before executing this statement.
Buka saja MySQL Workbench dan pilih [Instance] Startup / Shutdown dan klik start server. Itu berhasil untuk saya
sumber