Normally, I use host "localhost". But now I wish to allow MySQL Workbench to access. Workbench is located on a Windows PC with IP 10.x.x.x, and MySql is located on 10.y.y.y. I've tried the following to no avail. How is this accomplished?
CREATE USER 'myUserName'#'10.%' IDENTIFIED BY 'myPassword';
GRANT ALL PRIVILEGES ON * . * TO 'myUserName'#'10.%';
This is what phpMyAdmin displays when exporting the users:
# Privileges for `myUserName`#`10%`
GRANT ALL PRIVILEGES ON *.* TO 'myUserName'#'10%' IDENTIFIED BY PASSWORD '*xxx';
# Privileges for `myUserName`#`10.%`
GRANT ALL PRIVILEGES ON *.* TO 'myUserName'#'10.%' IDENTIFIED BY PASSWORD '*xxx';
# Privileges for `myUserName`#`localhost`
GRANT ALL PRIVILEGES ON *.* TO 'myUserName'#'localhost' IDENTIFIED BY PASSWORD '*xxx' WITH GRANT OPTION;
Related
When I type show grants for user in mysql
Then the sytem showed:
| GRANT USAGE ON *.* TO ''#'%' IDENTIFIED BY PASSWORD '*1E80DD016234830553A761E48526725559582391' |
| GRANT ALL PRIVILEGES ON `mydatabase`.`mytable` TO 'user'#'%'
So I typed
grant all privileges on *.* to 'user'#'%' identified by 'passwd';
Then the systemed showed
GRANT ALL PRIVILEGES ON *.* TO 'user'#'%' IDENTIFIED BY PASSWORD '*EC75E3374932E7506AB7858A3B026E93FB8ED3DF'
GRANT ALL PRIVILEGES ON `mydatabase`.`mytable` TO 'user'#'%'
Why I set the password for user but there are two phenomenom:
the hash code changed but my passwd secret didn't show in the table.
mysql -u user it can log in to the server but mysql -u user -p then showed access denied?
I am aware of the command
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'#'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
That will allow remote connections from the ip 1.2.3.4, but what if I wanted to allow connections from both 1.2.3.4 and 5.6.7.8?
Would it look like this?
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'#'1.2.3.4, 5.6.7.8' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Or is this not allowed?
You can run above command many times to GRANT access from multiple IPs.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'#'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'#'5.6.7.8' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
to all ips
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'#'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
With MySQL wildcards.
instead of using limited numbers you can implement a wildcard. this can be done by adding '%' instead of the numbers.
How to grant all privileges to all users in mySQL ?
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'#'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
What do I replace username with in order to allow it for every user on the given IP?Even if it is '' i.e no username at all in input ?
I tried * and % in username but that did not help.
You can try like this:
GRANT ALL PRIVILEGES ON *.* TO ''#'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
The manual says:
In this case, any user who connects from the local host with the
correct password for the anonymous user will be permitted access, with
the privileges associated with the anonymous-user account.
This is working for all my MySQL users irrespective of their hostname and Ips.
GRANT ALL ON <yourdbname>.* TO ''#'%' IDENTIFIED BY 'yourdbpassword';
FLUSH PRIVILEGES;
This should work:
GRANT ALL PRIVILEGES ON 'database'.'table' TO '%'#'1.2.3.4' WITH GRANT OPTION;
Wild card does not work for user in mysql grant privilege command.
If you know list of users then yOU can try :-
GRANT ALL PRIVILEGES ON *.* TO 'user1'#'1.2.3.4',
'user2'#'1.2.3.4',
'user3'#'1.2.3.4',
'user4'#'1.2.3.4',
'user5'#'1.2.3.4',
'user6'#'1.2.3.4';
If you want to grant all privileges to all users and be able to use without a password, the command:
GRANT ALL PRIVILEGES ON *.* TO ''#'%' IDENTIFIED BY '' WITH GRANT OPTION;
If, for example you hava database named 'my_db' and you doing operations from localhost, the command can be the follow:
GRANT ALL PRIVILEGES ON my_db.* TO ''#'localhsot' IDENTIFIED BY '' WITH GRANT OPTION;
MySQL does not support wildcards in user names, so you cannot do that in a single grant.
see the official doc
I type the commands below:
mysql –u root -p
Grant all privileges on *.* to root#”%” identified by “rootpassword” with grant option;
Grant all privileges on mysitedb.* to root#localhost;
then the server crashed:
Could not establish database connection. Please check the username,
password and hostname in the config file, and if necessary set up the
appropriate MySQL user and privileges.
change the grand statement in to below one, then solved:
mysql –u root -p
Grant all privileges on *.* to root#”%” identified by “rootpassword” with grant option;
Grant all privileges on mysitedb.* to root#localhost identified by “rootpassword” with grant option;
I'm using the following command
GRANT ALL PRIVILEGES ON *.* TO 'user'#'ip'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
To grant all privileges to a user. Is there a way I can make the ip a wildcard like 192.168.1.* so that I don't need to manually add each LAN ip I want give the user access to connect from?
Yes, use % in an address.
GRANT ALL PRIVILEGES ON *.* TO 'user'#'192.168.1.%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
Or you can use less restrictive host name and allow user to connect from everywhere.
GRANT ALL PRIVILEGES ON *.* TO 'user'#'%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
According to your requirement,
Let's start by making a new user called "chaminda" within the MySQL shell:
CREATE USER 'chaminda'#'%' IDENTIFIED BY 'password';
The first thing to do is to provide the user with necessary permission and here I have given all permission to the particular user.
GRANT ALL PRIVILEGES ON * . * TO 'chaminda'#'%' WITH GRANT OPTION;
Reload all the privileges.
FLUSH PRIVILEGES;
Note: Here host Name = % and that means you can access this database server from any host. Giving all privileges to the user is a big risk and that's not a best practice.