基于mysql 8.0.3版本
- 一、忘记root密码
- 1.1 、linux 系统下忘记密码
- 1.2、Windows 系统下忘记密码
- 1.3 Unix 和类 Unix 系统
- 二、账号问题
- 2.1 远程访问账号设置
一、忘记root密码
1.1 、linux 系统下忘记密码
啥?你问我为什么会忘记密码?别问,问就是好长时间不用忘记了!
问题如图:
好吧,忘记了root密码,问题不大。我们来抢救一下:
1、首先我们进入:/etc/mysql/
2、可以看到这个文件夹下有个my.cnf
配置文件,修改my.cnf: vim my.cnf
,在 [mysqld] 下加入:` --skip-grant-table,像这样:
3、重启mysql:sudo service mysql restart
4、输入 mysql
进入客户端
5、告诉服务器重新加载授权表,以便帐户管理语句起作用:FLUSH PRIVILEGES
6、修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
备注:skip-grant-tables 适用于任何平台下,win下mysql配置文件添加仍然有效。注意:这种方法不安全!任何人都可以在没有密码和所有权限的情况下进行连接。
1.2、Windows 系统下忘记密码
1、以管理员身份登录到系统。
2、停止MySql服务。
3、创建文本文件 mysql-init.txt。
4、写入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
5、进入到 MySQL 的 bin 目录 运行:mysqld --init-file=C:\\mysql-init.txt --console
,注意:mysql-init.txt文件位置为你实际的位置,这里用的不一定适合你!!!
6、如果是使用向导安装的 MySql ,则输入:
mysqld --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini" --init-file=C:\\mysql-init.txt
–defaults-file 可以使用服务管理器找到适当的设置:从“开始”菜单中选择 “控制面板”,然后 选择“管理工具”,然后选择 “服务”。在列表中找到 MySQL 服务,右键单击它,然后选择该 Properties选项。该Path to executable字段包含 --defaults-file 设置
7、服务器启动成功后,删除 mysql-init.txt.。
1.3 Unix 和类 Unix 系统
1、使用root登录到系统
2、kill 掉 MySql 服务:kill -9 pid
3、创建文本 mysql-init,写入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
4、保存这个文本,/你保存的位置/mysql-init
注意:请确保该文件具有允许 mysql 读取它的权限
5、启动 MySql :mysqld --init-file=你保存的位置/mysql-init &
6、修改密码~
7、服务器启动成功后,删除 /home/me/mysql-init
二、账号问题
2.1 远程访问账号设置
输入设置语句:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION
报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'password' WITH GRANT OPTION' at line 1
解决方案:
从 MySQL 8 开始,不再可以(隐式)使用该GRANT命令创建用户,需要使用:
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;