簡體   English   中英

MySql遠程訪問被拒絕

[英]MySql Remote Access Denied

我正在嘗試連接到mysql數據庫。 當我嘗試通過mysql Workbench連接時,我只能通過Java應用程序連接,但顯示:

Caused by: java.sql.SQLException: Access denied for user 'root'@'1.2.3.4' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:926)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1748)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1288)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2506)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)

數據源定義為:

<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://3.3.3.3:3306"/>
    <property name="username" value="root"/>
    <property name="password" value="12345"/>
</bean>

在db中,user_priviliges表為:

'root'@'%', 'def', 'USAGE', 'NO'

能幫我解決這個問題嗎?

編輯:

我正在使用jdbcTemplate,並且錯誤在此確切的行上:

getJdbcTemplate().queryForList(sql.toString());

除了已經擁有的'root'@'%'帳戶(使用相同的密碼)之外,您還需要為'root'@'localhost'創建一個帳戶。 為什么? 請參閱有關此主題mysql文檔 這是相關的部分:

其中兩個帳戶的用戶名是monty,密碼是some_pass。 這兩個帳戶都是具有完全權限執行任何操作的超級用戶帳戶。 僅在從本地主機連接時才能使用“ monty” @“ localhost”帳戶。 “ monty” @“%”帳戶將“%”通配符用於主機部分,因此可用於從任何主機進行連接。

必須同時擁有兩個帳戶的貨幣,才能從任何地方作為貨幣連接。 如果沒有localhost帳戶,當monty從本地主機連接時,由mysql_install_db創建的localhost匿名用戶帳戶將具有優先權。 結果,monty將被視為匿名用戶。 原因是匿名用戶帳戶比“ monty” @“%”帳戶具有更特定的“主機”列值,因此在用戶表排序順序中排在較早的位置。 (在第6.2.4節“訪問控制,階段1:連接驗證”中討論了用戶表排序。)

暫無
暫無

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

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