学院服务器中毒了,所以重新搭建了服务器。
使用 mysqladmin 命令行 修改 用户名密码的方式。最正确的格式如下:
D:/mysql/bin>mysqladmin -u root -p password 123456
提示Enter password: 输入这个命令后,需要输入root的原密码,然后root的密码将改为123456。如果你是第一次登陆还没修改过密码,直接回车就可以了。
这是 root 密码就修改成了 123456 。
不要使用下面这种格式,否则密码就修改成了 '123456' 这个8位字符,而不是6位的了。
D:/mysql/bin>mysqladmin -u root -p password '123456'
还有一种就是用SET PASSWORD 命令修改:
mysql> set password for root@'localhost' = password('新密码');
Query OK, 0 rows affected (0.02 sec)
--------------------------------------
但是当远程连接是报错:
(mysql) :"xxx.xxx.xxx.xxx" is not allowed to connect to this mysql server
解决方案:
1. 进入mysql
2. 对远程连接授权: 使用GRANT命令对远程连接授权, 之后刷新MySQL授权缓存.
[sql]
GRANT ALL PRIVILEGES ON *.* TO ‘UserName’@'Domain||IP’ IDENTIFIED BY ‘Password’;
FLUSH PRIVILEGES;
[/sql]
格式:grant 权限 on 数据库名.表名 用户名@客户IP identified by "客户密码";
mysql>grant select,insert,update,delete on *.* to admin@'%' identified by '123456';
新加的用户admin,其host为%,表示任何IP都可以连接进来.
如果希望开放所有权限的话请执行:
mysql>update user set select_priv='Y' , Insert_priv='Y', Update_priv='Y', delete_priv='Y', Create_priv='Y', Drop_priv='Y',Reload_priv='Y', shutdown_priv='Y', Process_priv='Y', File_priv='Y', Grant_priv='Y', references_priv='Y',Index_priv='Y', Alter_priv='Y', Show_db_priv='Y', Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y', Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y' where user='[username]';
即:grant all privileges on *.* to admin@'%' indentified by '123456';
才可以,这样可以避免重新启动mysql:
flush privileages;
注意概念:
host = localhost 的时候,表示登陆者是本机
host = 192.168.51.139 表示登陆者是该IP
当本机(localhost)就是192.168.51.139这个IP的时候,两者意义是不一样的
host = localhost 表示登陆本机,不属于其他客户机远程登陆,权限是服务器权限
host = 192.168.51.139 虽然等于localhost,但mysql将其理解为客户机远程登陆,所以想登陆服务器的话,作为客户机,必须由服务器用户(localhost的root)给予权限
eg: mysql> grant select,insert,update,delete on *.* to admin@192.168.51.139 identified by '123456';