我在mySQL数据库中有一个像这样的用户
我正在尝试从服务器B登录到serverA上的mySQL,在python中,这是我目前正在做的事情,
db = MySQLdb.connect(host='IP-address-server-A', user='username', passwd='my-password', db='my-database')
我收到此错误
(1045, "Access denied for user 'username'@'serverB' (using password: YES)")
发生了什么,为什么我无法连接?
感谢您的帮助
答案 0 :(得分:3)
显示登录服务器(请注意%
表示任何主机或通配符)
select user,host from mysql.user;
+-----------+------------+
| user | host |
+-----------+------------+
| ajax_guy | % |
| joe7 | % |
| joe8 | % |
+-----------+------------+
显示特定用户的赠款。
show grants for 'ajax_guy'@'%';
+----------------------------------------------------------------------
| Grants for ajax_guy@%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
如何将某个数据库的访问权限授予某个登录名。
以下我们向so_gibberish
数据库授予用户所有权利。
grant ALL on so_gibberish.* to 'ajax_guy'@'%';
查看该登录的现在的授权
+----------------------------------------------------------------------
| Grants for ajax_guy@%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `so_gibberish`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
使用密码drew_saturday
创建新的登录friday987
。
他拥有数据库 so_gibberish
的所有权限,可以从任何主机(%
)
grant ALL on so_gibberish.* to 'drew_saturday'@'%' IDENTIFIED BY 'friday987';
select user,host,password from mysql.user where user='drew_saturday';
+---------------+------+-------------------------------------------+
| user | host | password |
+---------------+------+-------------------------------------------+
| drew_saturday | % | *4600ED0F377308959665877BD327D4788DC2071F |
+---------------+------+-------------------------------------------+
顺便说一句,上面的密码就是哈希密码。
注意:对于MySQL 5.7,上面的命令是:
select user,host,authentication_string from mysql.user where user='drew_saturday';
Grant上的Mysql手册页。不要使用grant ALL on *. ...
向用户授予过多的权限。那将是系统中所有数据库。只需阅读手册,少即可。
有时,管理员希望只允许访问数据库中的少数几个表(不是其中的所有表)。手册是必读的。
最后一件事。 'drew_saturday'@'%'是一个与'drew_saturday'@'NOT-local'不同的登录名(借用你的标题)。它们是具有不同权限的不同登录。这是我在那里写的第一件事。