安裝方式一:通過下載官方安裝包安裝
由於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 命令查看是否安裝成功: