在MySQL數(shù)據(jù)庫中,hosts表是一個非常重要的系統(tǒng)表,它用于存儲主機名和IP地址之間的映射關(guān)系。但是,有時候我們會遇到一個問題:當我們嘗試查詢hosts表結(jié)構(gòu)時,會出現(xiàn)“表不存在”的錯誤信息。
mysql>DESC hosts; ERROR 1146 (42S02): Table 'mysql.hosts' doesn't exist
這個錯誤可能是由于MySQL版本的差異或者權(quán)限問題造成的。在較早的MySQL版本中,hosts表是存在的,但是在新的MySQL版本中,hosts表已經(jīng)被廢棄了。在新版MySQL中,hosts表的作用被遷移到了另一個系統(tǒng)表user中。
為了解決這個問題,我們可以在新版本的MySQL中使用以下命令來查詢用戶和主機之間的權(quán)限設(shè)置:
mysql>SELECT * FROM mysql.user;
上述命令將返回以下結(jié)果:
+------------------+------------------------+---------------------------------------------------+ | Host | User | Password | +------------------+------------------------+---------------------------------------------------+ | localhost | root | *HASHED_PASSWORD_HERE | | localhost | mysql.session | *THIS_IS_AN_AUTOGENERATED_PASSWORD_HERE | | localhost | mysql.sys | *THIS_IS_AN_AUTOGENERATED_PASSWORD_HERE | | localhost | debian-sys-maint | *HASHED_PASSWORD_HERE | | % | mynewuser | *HASHED_PASSWORD_HERE | +------------------+------------------------+---------------------------------------------------+
從上述結(jié)果可以看到,MySQL現(xiàn)在使用user表來存儲主機和用戶之間的關(guān)系。
總之,在新版MySQL中,hosts表已經(jīng)不存在了。使用user表來代替hosts表,在查詢用戶權(quán)限時,需要使用SELECT語句來查詢到正確的結(jié)果。