【windows】
1、以管理员的身份打开dos窗口,并关闭mysql服务器
# net stop mysql
2、进入mysql安装目录bin下,跳过权限检查启动
# mysqld --skip-grant-tables
3、另开dos窗口
4、进入mysql安装目录bin下,输入mysql
5、进入 mysql> 后,连接数据库
mysql> use mysql;
6、输入修改sql
mysql> update mysql.user set authentication_string=password('新密码') where user='用户名';
7、刷新权限
mysql> flush privileges;
8、退出mysql
mysql> q
9、启动mysql服务器
# net start mysql
10、输入mysql -u root -p,在Enter password:输入修改的密码,成功进入mysql
【linux】
1、查找my.cnf的路径,一般默认路径为/etc/my.cnf
# locate my.cnf
2、进入etc下
# cd /etc
编辑my.cnf配置文件
# vim my.cnf
2.在[mysqld]下添加skip-grant-tables,然后保存并退出(注:按I进入输入模式;按ESC,输入:wq,保存并退出)
3、重启mysql服务
# service mysql restart
4、执行mysql命令进入mysql命令行
# mysql -u root -p
5、修改root用户密码
MySQL> update mysql.user set authentication_string=password('新密码') where user='用户名';
6、刷新权限
MySQL> flush privileges;
7、退出mysql
MySQL> exit
8、把/etc/my.cnf中的skip-grant-tables注释掉
9、重启mysql
# service mysql restart
10、输入mysql -u root -p,在Enter password:输入修改的密码,成功进入mysql
注意:
要想远程可以连接数据库,需要对连接ip授权
1)登录mysql : mysql -uroot -p; 并输入密码
2)创建远程登陆用户并授权 :grant all PRIVILEGES on *.* to 用户@'授权ip' identified by '密码';
如果执行以上指令,报(You must reset your password using ALTER USER statement before executing this statement.)错误,是因为一开始是没有密码的,在初始化的时候有个密码,只是相当于临时密码:
需要先执行以下命令
alter user user() identified by "root";
执行立即生效:flush privileges;
简单并详细的说下授权指令
1:*.* 表示上面的权限是针对于哪个数据库的哪个表的,第一个*可以指定数据库,第二 * 可以指定数据表:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
2:root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。47.96.138.137 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。