一、忘记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;
三、数据表操作问题
3.1 更新数据表
3.1.1 列名重复
报错: Duplicate column name '列名'.
解决方案: 该类报错有两种可能:1、真的出现了列名重复,这个咋解决不用多说。2、列名被没有出现重复,这种情况一般在查询时出现,检查是有否同名的临时表即可。
3.2 添加字段
3.2.1 添加字段报错字符串值无效
报错:nested exception is java.sql.SQLException: Incorrect string value: '\xE5\x9C\xB0\xE7\xA3\x81' for column '列名' at row 1]
解决方案: 该类报错出现原因通常是环境中的某些内容未设置为正确处理 Unicode 文本,修改该列字符集为 uft8 即可。
例如:
单列修改:
ALTER TABLE 表名 CHANGE 列名 VARCHAR(20) CHARACTER SET utf8;
整张表修改字符集:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;