【MySQL】常见错误与常用命令的集锦

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
【背景介绍】
    在使用SQL Server数据库期间,想必大家一定都有过解决各种问题的经历了,很多时候,都会在大家的博客中看到问题与解决方案。现在开发使用的是MySQL数据库,现在来看,发现自己在MySQL中的经历越来越多。前两天,自己电脑的MySQL数据库出问题了,折腾了我好几个小时~~
    这篇博客就将把之前遇到的和这次遇到的错误记录下来,以后也可以更好更快的找到解决办法吧。
【常见错误】
  • (1) windows mysql提示:1045 access denied for user'root'@'localhost' using password yes
    因为在解决这个问题的时候,需要用到my.ini文件,安装完后并没有这个文件,从网上查的是可以自己创建,于是我就自己创建了一个这样的文件。内容如下:   
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
    # *** default location during install, and will be replaced if you
    # *** upgrade to a newer version of MySQL.

[mysqld]

    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M

    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin

    # These are commonly set, remove the # and set as required.
 basedir = E:\MySQL\mysql-5.6.24-winx64
 datadir = E:\MySQL\mysql-5.6.24-winx64\data
    # port = 8099
    # server_id = sa

    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M 

    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    skip-grant-tables
    default-character-set=utf8
   这个问题就解决了,在加上这个文件后,我尝试建立新用户,又出现了一个新的问题。
  • (2) ERROR 1364(HY000):Field 'ssl_cipher' doesn't have a default value 

    我照着博客的内容将my.ini文件中的一句话改了:
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    修改为
    sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    此后,我也成功创建了用户。
    这两个问题解决了,我在学习网上商城的时候也就一切顺利。
    但前两天,重启电脑后,数据库又出现了下面的一系列问题了。
  • (3) 启动MySQL服务,出现错误1067:
    	
    出现这个问题,我采取的办法是方法二,将my.ini文件删除,这样MySQL服务就可以正常启动了。
    但将my.ini文件删除后,一直出现1045的错误,就这样,两个问题好像死循环了,一直都解决不了。无奈之下,卸载了mysql,重新安装了一次。
    在这里卸载/安装的过程就不说了,下面继续看几个遇到的MySQL的错误:
  • (4) 2003-Can't connect to MySQL server on 'localhost'(10061)
    出现这个错误的原因,是MySQL服务没有启动,可输入service.msc窗口命令,进入到服务管理,将MySQL服务启动就行。或者使用mysql命令启动也可以。
  • (5) Host "localhost" is not allowed to connect to mysql server
     这是在本地都不能登录到MySQL数据库。
    首先,停止mysql服务:sc stop mysql
	
    然后,mysqld --skip-grant-tables
    另开一个终端,继续,mysqlcheck --check -upgrade --all-databases --auto-repair
    再输入mysql,终于提示连接成功了。
	
 本地可以连接成功了,下面别人在远程自己的数据库时,可能又会遇到1045的错误。
  • (6) Access denied for user 'root'@'localhost' (using password:YES)
      解决方法:
        方案一:改表
          use [databasename];
          select user,host,password from user;
            update user set host = '%' where user='root';
        方案二:授权
         GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
         FLUSH   PRIVILEGES;(任何主机都可以连接到mysql服务器)
  • (7) 中文乱码问题
      在做ITOO项目的时候,从代码中直接插入记录到数据库中,中文便是乱码了。第一版思修考试的时候,时间紧张,没有完全解决这个问题,部分可以导入中文,部分又导入的是乱码。在接下来的这一版开发中,终于找到了问题的根源。
     乱码缘由:
          不同的编码格式会导致同一字符,在不同字符集下的编码会不同。同样同一编码在不同的字符集中代码的字符也不相同。当你的MySQL返回的字符串的编码格式(字符集)与你的客户工具程序(mysql, php, query browser, ...)当前使用的字符集不同时,就会造成乱码。
     乱码后需要检查的信息:
          1. 数据库表中字段的字符集设置 。
show create table TableName 或 show full columns from tableName
          2. 当前联接系统参数  
show variables like 'char%'
        提示:
               中文,应确保表中该字段的字符集为中文兼容,具体包含以下四种:
 big5     | Big5 Traditional Chinese
 gb2312   | GB2312 Simplified Chinese
 gbk      | GBK Simplified Chinese
 utf8     | UTF-8 Unicode
   乱码原因
	
上图是我在检查上面两条信息的结果,很明显,所连接的数据库设置的字符集为latin1,所以,导入数据的时候就变成乱码了。
   解决方案:
         用Navicat软件打开对应的数据库,将其数据库属性的字符集设置为utf8.
	
【错误总结】
    很多情况下,都遇到1045的错误,在查资料的过程中,发现普遍的原因有以下两点:
    1.可能是mysql用户表中存在不完整的记录;
    2.可能是没有给mysql用户表中的用户授予权限。
    
    因为mysql数据库不像sql server数据库那样,可以在可视化的界面进行操作,在mysql中,各种操作都是需要通过各种命令去完成的,下面,就总结一些常用的命令,以便提高后期的工作效率。
  • 服务启动与停止
    net stop mysql
    net start mysql
  • 登录mysql
    mysql -r root -p 回车 输入密码
  • 显示数据库列表
    show databases;
  • 选择数据库和显示数据表
    use mysql;
    show tables;
  • 建库、删库
    create database dbName;
    drop database dbName;
  • 备份
    mysqldump -u [数据库用户名] -p [要备份的数据库名称]>[备份文件的保存路径]
  
 例子:mysqldump -u root -p test>E:\tt.sql
  • 还原
    mysql -u root -p<[备份文件的保存路径]

【学习心得】
1.数据库的备份很重要。因为不知道什么时候,什么原因,自己的数据库就不能用了,等到发生了,后悔也来不及了。
2.没有什么解决不了的问题,最坏的办法也就是重头再来。遇到问题了,第一次感觉还好,但遇到了一些没在自己意料之中的问题,遇到了以前的解决方案不再适用这一次的问题,心情就有些不一样了。最后,我还是自己把数据库给弄好了,事实证明,不要放弃,最坏的办法也就是重头再来。
3.学习是一个漫长的、不断补充、不断积累的过程。实际上,解决中文乱码的问题是后来补充的,因为一直都在使用mysql,一直处在不断学习地过程中,后面的学习或者偶尔的遇见,才使得自己把之前的问题解决了,所以,学习前后是一个互为补充的阶段。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
24天前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
49 0
|
3月前
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
37 0
|
29天前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
25 3
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
55 4
|
25天前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
20 0
|
4月前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
142 28
|
4月前
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
4月前
|
SQL 关系型数据库 MySQL
mysql性能调优:EXPLAIN命令21
【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!
57 1
|
4月前
|
存储 SQL Cloud Native
云原生数据仓库使用问题之运行MySQL命令发现中文内容变成了问号,该如何解决
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。