Я зіткнувся з проблемою з користувачем mysql не root/admin, я виконую наступні кроки для створення користувача та його привілеїв, виправте мене, якщо я роблю щось не так,
Я встановлюю mysql
на RHEL 5.7 64bit
, пакети згадані нижче, після того, як я зробив rpm install
, ми маємо
mysql_install_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-користувачу, це небезпечно (а у вас вже є &quo ;root&quo ; з такою роллю)
GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Цей оператор створює нового користувача і надає йому вибрані привілеї. ТОБТО:
GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Погляньте на docs, щоб детально ознайомитися з усіма привілеями
EDIT: ви можете шукати більше інформації за допомогою цього запиту (увійдіть як "root"):
select Host, User from mysql.user;
Щоб подивитися, що сталося
Для тих, хто виконав усі поради, але проблема не зникла.
Перевірте наявність збереженої процедури і перегляньте визначники. Ці визначники можуть більше не існувати..
Моя проблема з'явилася, коли ми змінили підстановочний хост (%) на IP-адресу, що зробило базу даних більш безпечною. На жаль, є деякі подання, які все ще використовують 'user'@'%', хоча 'user'@'172....' є технічно правильним.