mysql几个常用知识【2007-11-20 19:14:22】

(1)一般情况下,我们在后台直接访问数据库的机会很少,大多数时间都是通过工具如mysqladmin或者phpadmin远程访问mysql数据库服务器的,以mysqladmin为例。
如果想从192.168.1.102上以cme身份访问192.168.1.10上的mysql数据库服务,那么就需要在数据库服务器上添加这个账户。
首先,登录数据库后台:
mysql -uroot -plinuxmysql
登录到数据库提示符,然后创建cme用户,指定主机为192.168.1.102,从192.168.1.102以cme用户名登录到这台数据库服务器的密码为‘windowsmysql’,如下:
mysql>CREATE USER cme@192.168.1.102 IDENTIFIED BY ‘windowsmysql’;
mysql>exit;
这个时候,在192.168.1.102上用mysqladmin连接192.168.1.10上的mysql服务,默认端口为3306,不需要修改。
我们可以看到,很快就连接上了,如果有问题请检查防火墙设置等问题。
然后,右键创建数据库,你会发现弹出对话框提示不能创建,因为还没有给cme分配数据库的操作权限,所以下来需要给cme@192.168.1.102分配权限。
mysql>GRANT CREATE ON . TO cme@192.168.1.102 WITH GRANT OPTION;
给cme@192.168.1.102分配了create database的权限,然后我们退出mysqladmin后再次用mysqladmin连接上,创建数据库,成功,相应的,如果你还想使得在cme@192.168.1.102访问数据库时拥有跟多权限,就需要给它grant跟多的操作,如INSERT, DROP, UPDAE等。ON ‘数据库’表示对某个数据库的操作。
一般都是分配所有的权限,比如
mysql > GRANT ALL PRIVILEGES ON . TO cme@192.168.1.102 WITH GRANT OPTION
这样cme@192.168.1.102登录到192.168.1.10上的数据库后就能进行任何操作了。
如果你想在任何机子上都能登录数据库服务器并进行操作,可以如下写:
mysql>RANT ALL PRIVILEGES ON . TO cme@”%” [IDENTIFIED BY ‘windowsmysql’] WITH GRANT OPTION
如果已经设置了密码就没有必要再写上[IDENTIFIED BY ’windowsmysql’]了。
然后就可以尽情的访问了
一般情况下需要以root超级用户登录到数据库上设置其他超级用户的权限。
所以,我的数据库一般都设置为
mysql>
mysql>RANT ALL PRIVILEGES ON . TO root@”%” [IDENTIFIED BY ‘windowsmysql’] WITH GRANT OPTION
直接使用root进行访问。
注意,我们在这里给root grant的密码跟root直接从后台登陆的密码并不一定一致。linuxmysql是在localhost上登录时root的密码,windowsmysql是从任意主机登录时的密码(或者你也可以针对不同的客户端给root分配不同的连接密码,比如192.168.1.102连接到数据库的root密码为123455,而192.168.1.104以root连接数据库时密码可以为54321等等),这个我们可以从mysql的user表中的数据得到验证。
mysql>use mysql;
mysql> select Host, User, PassWord from user;
+———————–+——+——————————+
| Host | User | PassWord |
+———————–+——+—————–+
| localhost | root | *0E2B5059346AC0140970837959E5F4B3BA8E96E0 |
| localhost.localdomain | root | *0E2B5059346AC0140970837959E5F4B3BA8E96E0 |
| 127.0.0.1 | root | *0E2B5059346AC0140970837959E5F4B3BA8E96E0 |
| % | root | *6C24E7AC61619C4631613121B51F419DAA626E5E |
| 192.168.1.102 | cme | *6C24E7AC61619C4631613121B51F419DAA626E5E |
+———————–+——+——————————————-+
我们能看到,虽然密码加密了,但是不同的Host还是有不同的密码的。
(2)root密码忘记后恢复。
这个只能在后台直接修改了,远程就不行了。
先停止数据库服务
service mysqld stop
然后启动msyql,跳过身份验证。
#/usr/local/mysql/bin/mysqld_safe –skip-grant-tables &
然后mysql -uroot登录就不需要输入密码了
mysql>update mysql.user set password=PASSWORD(‘nothing’) where (User=’root’) and (Host = ‘localhost’);
mysql>flush privileges;
mysql>exit;
注意:如果你不加上Host = “localhost”的话,就改了所有root的密码
即192.168.1.102登录mysql的密码也被改了,这个要慎重修改喔。
然后再次连接就OK了
#mysql -uroot -pnothing
正常登录了。

(2)

This entry was posted in 运维相关. Bookmark the permalink. Follow any comments here with the RSS feed for this post. Both comments and trackbacks are currently closed.