Jeg står over for et problem med mysql non root/admin bruger, Jeg følger nedenstående trin for at oprette brugeren og dens privilegier, ret mig, hvis jeg gør det forkert,
Jeg installerer mysql
på RHEL 5.7 64bit
, pakker er nævnt nedenfor, når jeg har gjort rpm install
er vi
mysql_install_db
, dereftermysql_upgrade
også vi gør til serveren.Efter denne proces kan jeg logge ind som root
, men med en non-root bruger kan jeg ikke logge ind på serveren:
[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)
Dette er det problem, jeg står over for, er der nogen løsning på dette?
Giv ikke alle rettigheder over alle databaser til en ikke-root-bruger, det er ikke sikkert (og du har allerede "root" med den rolle)
GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Denne anvisning opretter en ny bruger og tildeler den udvalgte rettigheder. DVS:
GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Tag et kig på docs for at se alle privilegier i detaljer
EDIT: du kan søge efter mere info med denne forespørgsel (log ind som "root"):
select Host, User from mysql.user;
For at se hvad der skete
Til alle andre, der har fulgt alle rådene, men problemet er stadigvæk til stede.
Kontroller for lagrede procedurer og view DEFINERS. Disse definere eksisterer måske ikke længere.
Mit problem dukkede op, da vi ændrede wildcard-værten (%) til IP-specifikke, hvilket gjorde databasen mere sikker. Desværre er der nogle visninger, der stadig bruger 'user'@'%' selvom 'user'@'172....' teknisk set er korrekt.