grant select on testdb.* to root@'%';
上述语句意思为只将对数据库testdb的查询权限授予root用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
上述语句意思为将对所有数据库的所有权限都授权给root用户!
为了迁移mysql到oracle,采用了oracle的sql developer工具,并下载了mysqljdbc驱动(为了让sql developer连接mysql)
为了从oracle sql developer远程以root连接mysql
1
2
3
mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY '123456' WITH GRANT OPTION
Query OK, 0 rows affected (0.00 sec)
mysql>
在设置root账户密码时,可以选择是否允许其从远程访问。默认情况下是不允许的。
在命令行下,可以有两种大同小异的方法来作此设置:
(1)
1
2
3
mysql>GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'something' WITH GRANT OPTION
mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'something' WITH GRANT OPTION
第一句增加了一个root用户授权通过本地机(localhost)访问,密码“something”。
第二句则是使用通配符,授与root用户从任何其它主机发起的访问。
(2)亦可直接使用update语句修改user表:使用root用户或其他用户登录mysql,转到mysql数据库
1
2
3
4
5
update user set host='localhost' where user='root'
flush privileges//只允许root在本机登录
update user set host='%' where user='root'
flush privileges//允许root远程访问
注意,以上一定要加flush语句。
另外,如果要建新用户,则用grant语句比较方便,记住语句grant总是创建新用户。
例如我目前的库:
mysql>select host,user from user
+-----------+--------+
| host | user |
+-----------+--------+
| % | mytest |
| % | root |
| localhost | mytest |
| localhost | root |
+-----------+--------+
4 rows in set (0.00 sec)
root和mytest都既能本地连,也能远程连
1.用root或者运行mysqld的用户登录系统2.利用kill命令结束掉mysqld的进程
3.使用--skip-grant-tables参数启动MySQL
Server
shell>mysqld_safe
--skip-grant-tables
&
4.为root@localhost设置新密码
shell>mysqladmin
-u
root
flush-privileges
password
"newpassword"
5.重启MySQL
Server
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)