2020年11月16日 星期一

CentOS7 下安装 MySQL 5.7(移除預設mariadb) 跟5.7密碼錯誤相關問題處理

 

CentOS 7 系統開始,MariaDB 成為 yum 源中預設的資料庫安裝包。在 CentOS 7 及以上的系統中使用 yum 安裝 MySQL 包將無法使用 MySQL。本檔介紹如何移除mariadb相關,並安裝 MySQL 5.7.21

1、檢查 MariaDB 是否安裝

 yum list installed | grep mariadb



2、卸載全部 MariaDB 相關

yum -y remove mariadb*

3、下載 MySQL YUM

進入到要下載到的路徑:cd /usr/local/src

下載:wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

4、安裝 MySQL  YUM

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

5、檢查 MySQL  YUM 源是否安裝成功

yum repolist enabled | grep "mysql.*-community.*"

如圖所示則安裝成功。

6、查看 MySQL 版本

yum repolist all | grep mysql

7、安裝 MySQL

yum

install mysql-community-server

一直輸 y 就可以了。

8、啟動 MySQL 服務

systemctl start mysqld

9、測試連接 MySQL 服務

mysql -u root 或者 mysql


===============================================================================


剛安裝的 MySQL 是沒有密碼的,這時如果出現:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),解決如下:

1. 停止 MySQL 服務:systemctl stop mysqld 

2.以不檢查許可權的方式啟動 MySQL: mysqld

--user=root --skip-grant-tables &

3.再次輸入 mysql -u root 或者 mysql,這次就可以進來了。

4.更新密碼:

MySQL5.7 以下版本:

UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root';

MySQL5.7 版本:

UPDATE mysql.user SET authentication_string=PASSWORD('123456') where USER='root';

5.刷新:flush privileges;

6.退出:exit;

設置完之後,輸入 mysql -u root -p,這時輸入剛設置的密碼,就可以登進資料庫了。

=============================================================================

但進去mysql 使用語法出現錯誤訊息

mysql初始化密碼常見報錯問題

1mysql5.6是密碼為空直接進入數據庫的,但是mysql5.7就需要初始密碼

cat /var/log/mysqld.log | grep password

1

2,然後執行 mysql -uroot -p ,輸入上面的到的密碼進入,用該密碼登錄後,必須馬上修改新的密碼,不然會報如下錯誤:

mysql> use mysql;

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

1

2

3
3
,如果你想要設置一個簡單的測試密碼的話,比如設置為123456,會提示這個錯誤,報錯的意思就是你的密碼不符合要求

mysql> alter user 'root'@'localhost' identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

1

2
3
.
這個其實與validate_password_policy的值有關。

validate_password_policy有以下取值:

默認是1,即MEDIUM,所以剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字元。

有時候,只是為了自己測試,不想密碼設置得那麼復雜,譬如說,我只想設置root的密碼為123456

必須修改兩個全域參數:

首先,修改validate_password_policy參數的值

mysql> set global

validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
1
2
validate_password_length(
密碼長度)參數默認為8,我們修改為1

mysql> set globalvalidate_password_length=1;

Query OK, 0 rows affected (0.00 sec)
1
2
4
,完成之後再次執行修改密碼語句即可成功

mysql>alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)



==================================================================================

SQL基本語法:

操作功能

SQL 語法

說明

建立資料庫

create database 資料庫名稱;

列出所有資料庫

show databases;

刪除資料庫

drop database 資料庫名稱;

使用資料庫

use 資料庫名稱;

建立資料表

create table 資料表名稱(
sn integer auto_increment primary key,
name char(20),
mail char(50),
home char(50),
messages char(50)
);

常用資料庫資料型態
1. INT (
整數)
2. CHAR (1~255
字元字串)
3. VARCHAR (
不超過255字元不定長度字串)
4. TEXT (
不定長度字串最多65535字元)

列出資料表欄位資訊

describe 資料表名稱;

修改資料表欄位

alter table 資料表名稱
change column
原來欄位名稱
新欄位名稱資料型態;

新增資料表欄位

alter table 資料表名稱 add column 欄位名稱 資料型態;

刪除資料表欄位

alter table 資料表名稱 drop column 欄位名稱;

刪除資料表

drop table 資料表名稱;

清空資料表

truncate table 資料表名稱;

只清除資料並保留結構、欄位、索引

插入欄位資料

insert into 資料表名稱(欄位1,欄位2,欄位3,欄位4, ...... 欄位N)
values('
1','2','3','4', ...... 'N');

更新修改欄位資料

update 資料表名稱 set 欄位1='1',欄位2='2',欄位3='3',... 欄位N='N'
where
條件式 (例如 sn='5' name='塔司尼' );

查詢單一欄位資料

select 欄位名 from 資料表名稱;

查詢多個欄位資料

select 欄位名, 欄位名, 欄位名 from 資料表名稱;

查詢欄位資料的唯一值

select distinct 欄位名 from 資料表名稱;

重複值只列一次

查詢所有欄位資料

select * from 資料表名稱;

條件式查詢

select * from 資料表名稱 where 條件式 (例如 sn='5');

=, <, >, !=

條件式查詢 and

select * from 資料表名稱 where 條件式and 條件式2;

條件式查詢 or

select * from 資料表名稱 where 條件式or 條件式2;

查詢某一範圍 between

select * from 資料表名稱 where 欄位名 between and 2;

值為數字

查詢空值欄位的資料

select * from 資料表名稱 where 欄位名 is null

not null;

查詢特定筆數資料

select * from 資料表名稱 limit 8, 10;

9筆開始選取10

查詢結果遞增排序

select * from 資料表名稱 order by 欄位名;

查詢結果遞減排序

select * from 資料表名稱 order by 欄位名 desc ;

查詢比對字串列出單一欄位

select 欄位名 from 資料表名稱 where 欄位名 like '%字串%';

查詢比對字串列出所有欄位

select * from 資料表名稱 where 欄位名 like '%字串%';

刪除條件值資料

delete from 資料表名稱 where 條件式 (例如 sn='5' id='91001' );

刪除條件值資料

delete from 資料表名稱 where 條件式1
and
 
條件式2;

刪除條件值資料

delete from 資料表名稱 where 條件式or 條件式2;

比對刪除條件值資料

delete from 資料表名稱 where 欄位名 like '%字串%';