我正面临mysql非root/admin用户的问题,我正在按照下面的步骤创建用户及其权限,如果我做得不对,请纠正我,
我正在RHEL 5.7 64bit
上安装MySQL
,软件包如下所述,一旦我完成了RPM安装
,我们就
mysql_install_db
创建mysql db,然后mysql_upgrade
也正在对服务器执行操作。在此过程之后,我可以以root
身份登录,但如果使用非root用户,则无法登录到服务器:
[root@clustertest3 ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5
[root@clustertest3 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@clustertest3 ~]# ls -ld /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Nov 30 11:09 /var/lib/mysql/mysql.sock
mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT USER(),CURRENT_USER();
+----------------+----------------+
| USER() | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
[root@clustertest3 ~]# mysql -ugolden -p
Enter password:
ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)
这就是我面临的问题,有没有解决的办法?
不要将对所有数据库的所有权限授予一个非root用户,这是不安全的(而且您已经拥有具有该角色的“root”)
GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
此语句创建一个新用户并向其授予选定的特权。 即:
GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
请查看文档,查看所有特权的详细信息
编辑:您可以使用此查询(以“root”身份登录)查找更多信息:
select Host, User from mysql.user;
看看发生了什么
如果您使用远程机器(示例工作台)等连接到MySQL,请使用以下步骤在安装MySQL的OS上消除此错误
mysql -u root -p
CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;
请尝试登录到MYSQL实例。
这样可以消除此错误。
尝试:
CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
FLUSH PRIVILEGES;
或者更好地使用:mysql_setpermission
创建用户