我在 5.1.52 中有一个带有 mysql 的新 centos 6.2。然后我看到两个空的用户名,然后我删除了它,然后我看到 3 个 root 用户删除了它,并创建了一个这样的 CREATE USER 'root'@'%' IDENTIFIED BY ' ** ';。但是,当我现在以 root 身份进入我的 phpMyAdmin 时,我无法创建新数据库。我在这里做错了什么?
您的问题源于首先删除所有 root 用户。
当您使用创建用户时CREATE USER,它只需在 mysql.user 表中输入一个 rwo 。您需要立即发出此命令:
CREATE USER root@localhost;
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'whatever';
Run Code Online (Sandbox Code Playgroud)
如果您不立即发出 GRANT,则所有数据库权限都将被禁用(即,在 mysql.user 表中,update_priv='N'、delete_priv='N' 等)
如果你有 root@localhost 但仍然无法访问它,你可能必须像这样侵入它:
步骤01)像这样重新启动mysql
service mysql restart --skip-grant-tables --skip-networking
Run Code Online (Sandbox Code Playgroud)
STEP 02)从命令行输入mysql(此时不需要密码)
# mysql
Run Code Online (Sandbox Code Playgroud)
步骤 03) 做desc mysql.user
您将必须调整每个权限,因为 GRANT 命令不起作用将skip-grant-tables启用
例子
对于 MySQL 5.1,您可以输入新的 root@localhost,其密码为“whatever”,如下所示:
DELETE FROM mysql.user WHERE user='root' AND host='localhost';
INSERT INTO mysql.user SET
Host = 'localhost',
User = 'root',
Password = PASSWORD('whatever'),
Select_priv = 'Y',
Insert_priv = 'Y',
Update_priv = 'Y',
Delete_priv = 'Y',
Create_priv = 'Y',
Drop_priv = 'Y',
Reload_priv = 'Y',
Shutdown_priv = 'Y',
Process_priv = 'Y',
File_priv = 'Y',
Grant_priv = 'Y',
References_priv = 'Y',
Index_priv = 'Y',
Alter_priv = 'Y',
Show_db_priv = 'Y',
Super_priv = 'Y',
Create_tmp_table_priv = 'Y',
Lock_tables_priv = 'Y',
Execute_priv = 'Y',
Repl_slave_priv = 'Y',
Repl_client_priv = 'Y',
Create_view_priv = 'Y',
Show_view_priv = 'Y',
Create_routine_priv = 'Y',
Alter_routine_priv = 'Y',
Create_user_priv = 'Y',
Event_priv = 'Y',
Trigger_priv = 'Y',
ssl_type = '',
ssl_cipher = '',
x509_issuer = '',
x509_subject = '',
max_questions = 0,
max_updates = 0;
Run Code Online (Sandbox Code Playgroud)
步骤04)重新启动mysql
service mysql restart
Run Code Online (Sandbox Code Playgroud)
您可以从这里以 root@localhost 身份使用密码“whatever”登录。
请随意用您想要的密码替换任何内容。
试一试 !!!
当您进行全新安装时,您将在 mysql.user 表中看到匿名用户。匿名用户是空白的用户。立即删除它们,因为这可能会带来安全风险!
原因如下: 匿名用户可以访问前 4 个字母为 的任何数据库test。您可以在测试数据库中执行大量 CRUD 密集型操作。您可能还想将测试数据库重命名为完全不同的名称。请阅读这些链接,因为我之前已经在 DBA StackExchange 中解决过这个问题。
要确认是否需要这样做,请注意MySQL 5.0 认证学习指南第 498 页第 6 段的要点:
在 Unix 上,MySQL 附带了一个 mysql_secure_installation 脚本,可以对安装执行一些有用的安全相关操作。该脚本具有以下功能:
- 为 root 帐户设置密码
- 删除所有可远程访问的 root 帐户。
- 删除匿名用户帐户。这提高了安全性,因为它可以防止任何人以 root 身份从远程主机连接到 MySQL 服务器。结果是,任何想要以 root 身份连接的人都必须首先能够登录服务器主机,这提供了抵御攻击的额外屏障。
- 删除测试数据库(如果删除匿名帐户,您可能还需要删除他们有权访问的测试数据库)。
在全新安装中,您只需运行mysql_secure_installation即可。如果您已经加载了用户,您可以自己运行要点(假设您想将它们设置为 myckrit。如果您不确定 mysql_secure_installation 正在做什么,只需运行这些命令):
UPDATE mysql.user SET password=password('myckrit') WHERE user='root' AND password='';
DELETE FROM mysql.user WHERE host='%';
DELETE FROM mysql.user WHERE user='';
DELETE FROM mysql.db WHERE LEFT(db,4) = 'test';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14329 次 |
| 最近记录: |