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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM