Linux下安裝MySQL及遠程連接MySQL


安裝方式一:通過下載官方安裝包安裝

由於Linux安裝MySQL會遇到各種依賴問題,本博文整理了下安裝方放,避免遇到依賴問題

查看是否自帶mariadb
rpm -qa|grep mariadb
然后卸載
rpm -e packagename  --nodeps
下載完整rpm包:
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
然后解壓:
tar -xvf https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
然后先yum安裝一下net-tools庫:yum -y install net-tools*
rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm
[root@jordy rpm]# rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm
warning: mysql-community-server-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
        libaio.so.1()(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
        libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
        libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
看到報錯了,是缺少libaio庫:wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
然后安裝該庫: rpm -ivh http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm

然后yum 安裝 net-tools* 庫

groupadd mysql

useradd -g mysql mysql
到了官方文檔時間段了,看下圖,圖中英文翻譯過來就是:
在Unix和Unix系列系統中,有一點是很重要的,那就是確保數據庫目錄與文件的所有者為mysql登錄賬戶,
以便在你運行mysqld服務的時候,mysql服務可以對這些目錄和文件進行讀取與寫入操作。
如果你是以root身份運行mysqld服務,就需要確認一下,執行如下面顯示的包含有--user選項的命令:
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysqld --initialize-insecure --user=mysql
另外,當你是以mysql的賬戶登錄並執行程序的情況下,你可以將--user選項從命令中去掉。
所以我在前面提到過添加mysql用戶和mysql用戶組,當然這步操作可做可不做。通過官方文檔我們可以知道,
如果我是root身份登錄Linux系統,可以執行:mysqld --initialize --user=mysql或者mysqld --initialize-insecure --user=mysql。
如果我是以mysql用戶登錄Linux系統,可以執行:mysqld --initialize或者mysqld --initialize-insecure。
初始化mysql:
mysqld --initialize --user=mysql
啟動mysql
systemctl  start  mysqld
查看剛剛初始化生成的臨時密碼:
vim /var/log/mysqld.log 
*rajC8ykZ:5y
然后登錄mysql
mysql -u root -p
登錄后> 
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
要求重置密碼:
則重置設置下密碼,比如111111
>SET PASSWORD = PASSWORD('111111');
>ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
>flush privileges;
但是報錯:
mysql> SET PASSWORD = PASSWORD('123456');
ERROR 1064 (42000): 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 'PASSWORD('111111')' at line 1
mysql> 

那直接按提示alter吧:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'tangtang';

然后就開始使用吧;

create database study;

use  study;

CREATE TABLE `t_users` (    
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',    
`account` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '登錄賬號',    
`passwd` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '登錄密碼',    
`salt` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '注冊時生成的salt',    
`nick` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用戶昵稱',    
`truename` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '真實姓名',    
`headimg` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用戶頭像地址', 
UNIQUE KEY `id` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 

在客戶端連接遠程服務器是,若遇到的如下錯誤:2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 

 

這是因為即從mysql5.7版本之后,默認采用了caching_sha2_password驗證方式,我用的mysql8.0,於是就遇到了這個問題。

解決辦法:
mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root賬戶密碼' ;  意為使用舊的認證方式。

 

mysql 新建用戶並賦予遠程訪問權限

[root@demo /]# mysql -u root -p #登錄服務器數據庫

Enter password:123xxx

#1.創建一個新用戶 testuser 密碼為 testuserpass

CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'testuserpass';

#2.創建數據庫testDB

create database testDB;

#3.執行命令為testuser用戶添加使用testDB權限

grant all privileges on testDB.* to testuser@localhost identified by 'testuserpass';

#4.執行命令,為testuser用戶添加遠程訪問權限

GRANT ALL PRIVILEGES ON testDB.* TO 'testuser'@'%' IDENTIFIED BY 'testuserpass' WITH GRANT OPTION;

#5.刷新權限表

flush privileges;

回收權限

revoke all on information_schema.* from 'testuser'@'%' ;

安裝方式二:通過docker安裝(牆裂推薦) 

1、拉取官方的最新版本的鏡像:

$ docker pull mysql:latest

2、運行容器

$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

參數說明:

  • -p 3306:3306 :映射容器服務的 3306 端口到宿主機的 3306 端口,外部主機可以直接通過 宿主機ip:3306 訪問到 MySQL 的服務。
  • MYSQL_ROOT_PASSWORD=123456:設置 MySQL 服務 root 用戶的密碼。

通過 docker ps 命令查看是否安裝成功:

 

 


免責聲明!

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



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