我正在尝试从R连接到MySQL。我已经安装了" 8.0.11 MySQL社区服务器 - GPL"在我的机器上。在R studio中,我安装了RMySQL Library。
当我发出命令时:
con = dbConnect(RMySQL::MySQL(),user="root", password = "password", dbname="test")
我一直收到错误:
.local(drv,...)出错:无法连接数据库:错误: 未知数据库'测试'
我不确定为什么它会继续发出此错误。有什么建议吗?
答案 0 :(得分:1)
显而易见的原因可能是"我希望"因为你没有包含主机IP。我也更喜欢使用pool
包。然后您的连接呼叫可能是
library(DBI)
library(RMySQL)
library(pool)
pool <- dbPool(
drv = RMySQL::MySQL(),
dbname = "db_name",
host = "127.0.0.1",
username = 'user_name',
password = 'password',
port = 3306
)
onStop(function() {
poolClose(pool)
})
另一件事情是,在测试数据库上定义具有适当权限的用户,并在root连接调用中使用此用户作为数据库连接安全性最佳实践,这样做更好。
答案 1 :(得分:1)
这是我用来从R
访问MySQL的代码# 1. Library
library(RMySQL)
# 2. Settings
db_user <- 'your_name'
db_password <- 'your_password'
db_name <- 'database_name'
db_table <- 'your_data_table'
db_host <- '127.0.0.1' # for local access
db_port <- 3306
# 3. Read data from db
mydb <- dbConnect(MySQL(), user = db_user, password = db_password,
dbname = db_name, host = db_host, port = db_port)
s <- paste0("select * from ", db_table)
rs <- dbSendQuery(mydb, s)
df <- fetch(rs, n = -1)
on.exit(dbDisconnect(mydb))
请检查一下它的工作原理。
PS。看起来你错过了&#39; db_table&#39;参数。
答案 2 :(得分:1)
RMariaDB 似乎是这些天要走的路。用 MySQL 测试过。
sudo apt-get update
sudo apt-get install libmariadbclient-dev
R 代码:
# install.packages("RMariaDB")
library(DBI)
# Connect to the MySQL database
con <- dbConnect(RMariaDB::MariaDB(),
dbname = "test",
host = "localhost",
port = 3306,
user = "root",
password = "password")
# Get table names
tables <- dbListTables(con)
# Display structure of tables
str(tables)
# Always cleanup by disconnecting the database
dbDisconnect(con)
您可能会遇到身份验证问题:
错误:连接失败:无法加载插件缓存_sha2_密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TopSecret##1234';