MySQL常见问题处理方案

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL常见问题及其解决方案整理

MySQL 连接字符串#

MySQL 5.7#

Copy

jdbc.drive=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=falsejdbc.username=rootjdbc.password=123456

注意:好像现在MySQL5.7的新版本也需要设置时区了;如果上面的连接不上MySQL,就用下面的这个

Copy

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTCjdbc.username=rootjdbc.password=123456

MySQL 8#

Copy

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTCjdbc.username=rootjdbc.password=123456

MySQL修改用户权限#

MySQL数据库修改用户权限(远程访问权限、操作权限)

前提:需要使用命令行登陆,并切换到MySQL库

Copy

# CMD 命令行登录 MySQL:mysql -uroot -p
# 使用 mysql 数据库
use mysql;

# 查询用户表,检查用户的访问权限
select host,userfromuserwhereuser='root';
# 将 host 设置为 % 表示任何 IP 都能连接 mysql,当然也可指定为某个特定 ip
updateuserset host='%'whereuser='root';
# 重新加载权限表
flush privileges;

# 给 root 用户赋予远程连接权限
grantall privileges on*.*to'root'@'%'withgrant option;
# 重新加载权限表
flush privileges;

MySQL 重置密码#

记得密码#

Copy

# 修改密码,且以加密方式存储密码
ALTERUSER'root'@'localhost' IDENTIFIED BY'123456';

# 低于5.7新版本的使用这个命令
updateuserset password=password("123456") whereuser="root";

# 高于5.7版本的password字段已经变为了authentication_string
updateuserset authentication_string=password("123456") whereuser="root";

注意

  • alter 和 update 命令均可修改密码,但是它们也是有区别的
  • update 修改后的密码存储在数据库中是明文;而 alter 存储的是加密后的数据
  • update 命令保存的为明文是因为没有使用 password() 方法,而 password() 方法在 mysql5.7.6 版本以后已经废弃了,所以必须使用 alter 命令去修改密码了
  • 在免鉴权的情况下,直接使用 alter 命令去修改密码也是不可以的,会报错;所以必须先使用 update 命令清空密码,然后再使用alter命令修改密码

不记得密码#

修改配置文件#

  • my.ini 文件的 [mysqld] 这个条目下加入 skip-grant-tables 保存后退出,重启MySQL服务
  • 这时候在cmd里面输入 mysql -u root -p 就可以不用密码登录了,出现了password:的时候直接回车可以进入

Copy

# 使用 mysql 库
use mysql;

# 低于5.7新版本的使用这个命令
updateuserset password=password("123456") whereuser="root";
# 高于5.7版本的password字段已经变为了authentication_string
updateuserset authentication_string=password("123456") whereuser="root";

# 重新加载权限表
flush privileges;
  • 最后,删除最后一行的“skip-grant-tables”,保存并关闭文件,并重启MySQL服务

直接使用CMD命令#

注意:命令行需要以管理员身份运行

Copy

# 停止 MySQL 服务
net stop mysql
# 启动 MySQL 服务的时候跳过权限表认证
mysqld --console --skip-grant-tables --shared-memory

Copy

# 由于上面的命令行被mysql的服务给占用,我们得重新开启一个新的命令行
# mysql -uroot -p
use mysql;
# 将root用户的密码清空(低于5.7updateuserset password=password("") whereuser="root";
# 将root用户的密码清空(高于5.7updateuserset authentication_string="" whereuser="root";
# quit 退出此命令行
quit;


# 然后在之前的命令行将我们开启的 mysql 服务停止掉(Ctrl+C 或者关闭命令行)
# 然后执行net start mysql 重新启动 mysql 服务


# 命令行中输入mysql -uroot -p 然后按enter键,密码为空
use mysql;
# 修改密码
ALTERUSER'root'@'localhost' IDENTIFIED BY'123456';
# 退出后,使用新密码登录
quit;

Win10 安装两个MySQL#

前提:在本地安装了MySQL8之后,还想安装MySQL5.7

  • 到官网下载MySQL5.7的压缩包
  • 把安装包放到D盘(不要和MySQL8放到同一个文件夹里面),并配置好MySQL5.7的Path路径
  • 将MySQL原来的服务停掉
  • 在MySQL5.7的压缩路径下创建 my.ini 文件

Copy

[mysql]# 设置MySQL客户端默认字符集default-character-set=utf8

[mysqld]# 设置3307端口port=3307# 设置MySQL的安装目录basedir=D:\\software\\Database\\mysql-5.7.36-winx64
# 设置MySQL的数据存放目录datadir=D:\\software\\Database\\mysql-5.7.36-winx64\\data
# 允许最大连接数max_connections=200# 服务器使用的字符集默认为8比特编码的lantin1字符集character-set-server=utf8
# 创建新表时使用的默认存储引擎default-storage-engine=INNODB
  • mysql 安装问题:由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题 解决方法
  • 以管理员身份打开cmd 【注意是管理员身份,要不会报错】【进入到mysql安装目录的bin目录下
  • 这里要注意控制台里生成的密码,并进行保存:位置在 A temporary password is generated for root@localhost: 后面

Copy

d:
cd D:\software\Database\mysql-5.7.36-winx64\bin
mysqld --defaults-file=D:\\software\\Database\\mysql-5.7.36-winx64\\my.ini --initialize --console
  • 然后再执行命令【进入到mysql安装目录的bin目录下

Copy

mysqld install MySQL5.7.36 --defaults-file="D:\\software\\Database\\mysql-5.7.36-winx64\\my.ini"
  • 打开注册表 win+R 👉 regedit ,查找 计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services 下的 MySQL5.7.36
  • 并修改ImagePath中的路径

Copy

"D:\software\Database\mysql-5.7.36-winx64\bin\mysqld.exe" --defaults-file="D:\software\Database\mysql-5.7.36-winx64\my.ini" MySQL5.7.36
  • 在任务管理器中开启MySQL5.7.36服务之后,此时在CMD中输入命令,使用临时密码登录,即可访问MySQL5.7服务器了

Copy

mysql -uroot -P3307 -pSSuaQvogx7/Q
  • 修改密码

Copy

set password for root@localhost=password('123456');
quit;

Linux安装MySQL#

  • 上传 mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar 到linux中的/opt/resources下,然后把该文件包解压到mysql文件夹中

Copy

cd /opt/resources

mkdir mysql

tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql
  • 然后一个一个执行一下命令来安装对应的程序

Copy

rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm

yum install openssl-devel

rpm -ivh  mysql-community-devel-8.0.26-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm

rpm -ivh  mysql-community-server-8.0.26-1.el7.x86_64.rpm
  • 启动MySQL服务

Copy

systemctl start mysqld

Copy

systemctl restart mysqld

Copy

systemctl stop mysqld
  • 查询自动生成的root用户密码

Copy

grep 'temporary password' /var/log/mysqld.log
  • 登录MySQL

Copy

mysql -u root -p
  • 修改root用户密码
  • 设置密码的复杂度为简单类型,密码长度为6

Copy

set global validate_password.policy = 0;
set global validate_password.length = 6;

Copy

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
  • 然后记得修改下远程权限
  • 最后开放Linux防火墙的3306端口

Copy

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

作者: 不二橘子酱

出处:https://www.cnblogs.com/sbgong/p/15646302.html

版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。

分类: 问题集锦

Sponsor

  • PayPal
  • AliPay
  • WeChat

0


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
安全 关系型数据库 数据管理
DMS产品常见问题之香港地区RDS开启安全访问代理失败如何解决
DMS(数据管理服务,Data Management Service)是阿里云提供的一种数据库管理和维护工具,它支持数据的查询、编辑、分析及安全管控;本汇总集中了DMS产品在实际使用中用户常遇到的问题及其相应的解答,目的是为使用者提供快速参考,帮助他们有效地解决在数据管理过程中所面临的挑战。
|
2月前
|
DataWorks 安全 关系型数据库
DMS产品常见问题之香港RDS走代理失败如何解决
DMS(数据管理服务,Data Management Service)是阿里云提供的一种数据库管理和维护工具,它支持数据的查询、编辑、分析及安全管控;本汇总集中了DMS产品在实际使用中用户常遇到的问题及其相应的解答,目的是为使用者提供快速参考,帮助他们有效地解决在数据管理过程中所面临的挑战。
|
2月前
|
关系型数据库 MySQL API
Flink CDC产品常见问题之mysql整库同步到starrock时任务挂掉如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
2月前
|
分布式计算 关系型数据库 数据处理
Dataphin常见问题之没有建表的权限如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
2月前
|
SQL 安全 关系型数据库
MySQL有哪些常见问题
MySQL有哪些常见问题
|
3天前
|
运维 容灾 关系型数据库
介绍几种 MySQL 官方高可用方案
MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。
58 3
介绍几种 MySQL 官方高可用方案
|
2月前
|
SQL 缓存 关系型数据库
MySQL常见问题解决和自动化安装脚本
这篇内容包含了两个主要部分:解决MySQL登录问题和处理GPG密钥问题。当MySQL密码正确但无法登录时,可以通过执行SQL命令`ALTER USER`和`flush privileges`来修改和重置密码。对于MySQL安装时的GPG密钥错误,首先需要强制删除旧的MySQL仓库包,导入新的GPG公钥,然后安装MySQL服务器。如果遇到GPG检查错误,可以使用`--nogpgcheck`参数忽略检查来安装。最后,提供了一个自动化安装MySQL的脚本,用于检查旧版本、卸载残留、安装MySQL8并启动服务。
39 1
MySQL常见问题解决和自动化安装脚本
|
2月前
|
SQL 关系型数据库 MySQL
MySQL in 太慢的 3 种优化方案
MySQL中的`eq_range_index_dive_limit`参数默认值为200,影响了IN查询的执行方式。当IN列表项少于这个值时,MySQL会使用扫描索引树(精确成本计算),而多于此值则使用索引统计(快速但可能不准)来分析查询成本。大量IN值可能导致性能下降。解决方案包括:1) 分批查询;2) 使用UNION ALL创建内存临时表;3) 创建实体表存储IN值并进行JOIN操作。注意,实体表需及时清理并避免反复插入删除导致性能下降。
106 0
|
2月前
|
搜索推荐 关系型数据库 MySQL
MySQL插入汉字报错的解决方案
MySQL插入汉字报错的解决方案
21 0
|
2月前
|
关系型数据库 Java 测试技术
云效产品使用常见问题之流水线Maven单元测试链接rds要配置白名单如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。