服务器输入密码登录并进入mysql
mysql -u root -p
添加新用户tim,设置密码为123456
create user 'tim'@'%' identified by '123456';
刷新权限
flush privileges;
为tim指定只能访问这台服务器的的one_site数据库
grant all privileges on `one_site`.* to 'tim'@'%' identified by '123456';
刷新权限
flush privileges;
如有必要重启一下mysql
service mysqld restart
期间,可以查看一下此用户拥有哪些数据库的权限
SHOW GRANTS FOR tim@'%';
若需要删除此用户的某个数据库权限,例如删除tim用户的ar_test的数据库权限
REVOKE ALL ON ar_test.* FROM 'tim'@'%';
若需要删除此用户的所有数据库权限,则 - 未测试,暂未知可行性
DROP USER 'tim’@'%';
如果想为单独的用户配置单独的ip才可以远程连接数据库,则添加以下(非必须)
GRANT ALL PRIVILEGES ON one_site.* TO 'tim'@'14.123.237.125' IDENTIFIED BY '123456' WITH GRANT OPTION;
完成后即可在指定ip用Navicat连接数据库
1、注意:以上语句在MySQL 5.7中可能报错:ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist,则执行以下
drop table if exists mysql.servers;
2、drop完table后新建回来servers
CREATE TABLE `servers` ( `Server_name` char(64) NOT NULL, `Host` char(64) NOT NULL,`Db` char(64) NOT NULL, `Username` char(64) NOT NULL, `Password` char(64) NOT NULL, `Port` int(4) DEFAULT NULL, `Socket` char(64) DEFAULT NULL, `Wrapper` char(64) NOT NULL, `Owner` char(64) NOT NULL, PRIMARY KEY (`Server_name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
3、若报什么GRANT ALL PRIVILEGES 的 @后面不能跟%,则把%改为localhost试试
grant all privileges on `one_site`.* to 'tim'@'localhost' identified by '123456';
4、若GRANT ALL PRIVILEGES ON one_site.* TO 'tim'@'localhost' IDENTIFIED BY '123456';报什么错时,可能是由于之前create了用户时IDENTIFIED BY了一个密码而这里又IDENTIFIED BY一次,所以会提示你用什么alter user语法,此时直接把IDENTIFIED BY后面的去除即可
GRANT ALL PRIVILEGES ON one_site.* TO 'tim'@'localhost';
5、若已经create的user密码需要修改,则(注意用户名tim没有引号)
alter user tim identified by 'Zmkm2020';
6、修改完用户密码记得flush一下
flush privileges;