簡體   English   中英

Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

[英]Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

最近我試圖更改我的 Rails 應用程序的數據庫。 我正在使用sqlite3 ,我想將其更改為MySQL 我按照本教程的步驟進行操作: https://guides.rubyonrails.org/configuring.html#configuring-a-mysql-or-mariadb-database

這是我的database.yml

default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  adapter: mysql2
  encoding: utf8mb4
  database: blog_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: db/test.sqlite3

production:
  adapter: mysql2
  advisory_locks: false

是什么導致了以下錯誤: Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)我需要做些什么來修復它?

閱讀您的最新評論,我注意到您遇到了一個新錯誤:

#<Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: NO)>

您已將開發環境下的密碼字段留空。 您需要做的就是使用安裝mysql2時設置的相同密碼填寫密碼,它應該這樣做。

如果您忘記了密碼, 請查看本指南:

恢復指南,您應該:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root

一旦進入 MySQL,你應該輸入:

use mysql;
update user set authentication_string=password('NEWPASSWORD') where user='root';
flush privileges;
exit

這應該這樣做。 如果你想再次登錄 MySQL,你應該輸入:

mysql -u root -p NEWPASSWORD

-p代表密碼。

我建議不要直接在 database.yml 文件上使用您的密碼。 使用密碼設置環境變量然后在 database.yml 上使用它會更安全,如下所示:

  username: <%= ENV.fetch("username") %>
  password: <%= ENV.fetch("password") %>

如果是這種情況並且您正在運行 Linux,則必須更新/etc/environment下的環境變量。 /etc/environment你必須有這樣的東西:

username=MYSQL_USERNAME_HERE
password=MYSQL_PASSWORD_HERE

檢查您的系統日志以查看套接字位置在哪里。 在我的情況下是“運行/mysqld/mysqld.sock”。 然后編輯數據庫.yml 文件。

socket: /tmp/mysql.sock

socket: /run/mysqld/mysqld.sock

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM