百木园-与人分享,
就是让自己快乐。

MySQL常见问题

MySQL 连接字符串

MySQL 5.7

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

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

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

MySQL 8

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

MySQL修改用户权限

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

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

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

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

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

MySQL 重置密码

记得密码

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

# 低于5.7新版本的使用这个命令
update user set password=password(\"123456\") where user=\"root\";

# 高于5.7版本的password字段已经变为了authentication_string
update user set authentication_string=password(\"123456\") where user=\"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:的时候直接回车可以进入

# 使用 mysql 库
use mysql;

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

# 重新加载权限表
flush privileges;

  • 最后,删除最后一行的“skip-grant-tables”,保存并关闭文件,并重启MySQL服务

直接使用CMD命令

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

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

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

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

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

Win10 安装两个MySQL

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

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

[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: 后面

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目录下】

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中的路径

\"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服务器了

mysql -uroot -P3307 -pSSuaQvogx7/Q

  • 修改密码

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文件夹中

cd /opt/resources

mkdir mysql

tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql

  • 然后一个一个执行一下命令来安装对应的程序

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服务

systemctl start mysqld

systemctl restart mysqld

systemctl stop mysqld

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

grep \'temporary password\' /var/log/mysqld.log

  • 登录MySQL

mysql -u root -p

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

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

ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'123456\';

  • 然后记得修改下远程权限
  • 最后开放Linux防火墙的3306端口

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

来源:https://www.cnblogs.com/marmaladeHY/p/15646302.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » MySQL常见问题

相关推荐

  • 暂无文章