centos7安裝mysql8
解除安裝MariaDB
MariaDB
MySQL 的一個分支,主要由開源社群維護
- CentOS 7+ 不再預設使用 MySQL 資料庫,而是 MariaDB 資料庫。
- 直接安裝 MySQL 會與 MariaDB 的檔案衝突。
# 使用yum解除安裝
yum remove mariadb
安裝mysql壓縮包
- 去官網找mysql官網
- wget下載
# 感覺挺快的
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
安裝mysql和配置
安裝
直接給程式碼吧。反正解壓就行,不用編譯。
# 解壓
tar -xJvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.x
# 改個名
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql8
# 直接進去檢視bin資料夾在不在,進去執行版本確認成功
cd ./bin
./mysql --version
# 如何配置環境變數,會配置自己配就行
# 先輸出PATH
echo $PATH
# /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin
# 再找自己bin的位置
pwd
# /opt/mysql8/bin
# 然後暫時配置就是直接寫,要全域性配就丟/etc/profile
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/opt/mysql8/bin"
# 全域性
echo PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/opt/mysql8/bin" >> /etc/profile
配置檔案
- 先配置使用者和賦予許可權(直接往下複製就行)(需要自定義就自定義,資料檔案丟/data了)
# 新增使用者組
groupadd mysql
# 建立mysql使用者
useradd -r -g mysql mysql
# 建立資料目錄
mkdir -p /data/mysql8_data
# 更改屬主和陣列
chown -R mysql:mysql /data/mysql8_data
# 更改模式
chmod -R 750 /data/mysql8_data
- 配置檔案my.conf
我的配置檔案放/opt/mysql8/conf/my.conf了,配置如下,搞個可以直接複製的
[mysql]
default-character-set=utf8mb4
[client]
port =3306
socket =/tmp/mysql.sock
[mysqld]
port =3306
server-id =3306
user =mysql
# 安裝目錄
basedir =/opt/mysql8
# 資料目錄
datadir =/data/mysql8_data/mysql
log-bin =/data/mysql8_data/mysql/mysql-bin
innodb_data_home_dir =/data/mysql8_data/mysql
innodb_log_group_home_dir =/data/mysql8_data/mysql
# 日誌和程序資料
log-error =/data/mysql8_data/mysql.log
pid-file =/data/mysql8_data/mysql.pid
# 服務端字符集
character-set-server =utf8mb4
lower_case_table_names =1
autocommit =1
# 下面的可不修改
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
binlog_format=mixed
binlog_expire_logs_seconds =864000
# 建立表時使用的預設儲存引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
- 搞完了直接初始化(報錯了就大概是流程寫錯了)
-
--defaults-file:指定配置檔案(要放在--initialize 前面)
-
--user: 指定使用者
-
--basedir:指定安裝目錄
-
--datadir:指定初始化資料目錄
-
--intialize-insecure:初始化無密碼(否則生成隨機密碼)
mysqld --defaults-file=/opt/mysql8/conf/myconf --basedir=/opt/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure
- 啟動/登入/改密碼
# 啟動 (後面加個&讓終端不被掛起,打個回車就能繼續命令)
mysqld_safe --defaults-file=/opt/mysql8/conf/my.conf &
# (首次)登入
mysql -u root --skip-password
# 進入命令列成功就可以改密碼了
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
# 重新整理許可權
FLUSH PRIVILEGES;
- 之後日常使用可以在命令列修改密碼
# 修改密碼
mysqladmin -u使用者名稱 -p舊密碼 password 新密碼
日常使用mysql
- mysql未啟動(注意配置檔案位置)
mysqld_safe --defaults-file=/opt/mysql8/conf/my.conf &
- mysql進入
mysql -uroot -p
然後輸入密碼就行 - 在命令列
退出命令列exit
。
關閉mysql服務shutdown
(注意別在linux上輸入,不然給關機了)
對了,需要配置遠端一類或者參考大佬的文章
https://www.cnblogs.com/zhourx/p/17558946.html
補充一下mariadb的使用。
因為做補充,不用很詳細的語句,可以倉庫這位博主的部落格:https://www.cnblogs.com/pyyu/p/9467289.html
- yum安裝
配個新的yum倉庫,然後使用yum安裝
# 建立一個新倉庫
vi /etc/yum.repos.d/MariaDB.repo
# 新增repo倉庫配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
# 接下來yum安裝就行
yum install MariaDB-server MariaDB-client
-
基本使用
和yum操作平常的服務一樣的
systemctl start mariadb #啟動MariaDB systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重啟MariaDB systemctl enable mariadb #設定開機啟動
-
資料庫基本操作
-
新安裝的操作:
# 進行初始化 mysql_secure_installation # 接下來會有一堆選項,自己選就是
-
可能會使用的命令
#修改mysql密碼 MariaDB [(none)]> set password = PASSWORD('redhat123'); # 建立新使用者 create user yuchao@'127.0.0.1' identified by 'redhat123'; # 分配使用者 use mysql select host,user,password from user where user='yuchao' # 授權 grant 許可權 on 資料庫.表名 to 賬戶@主機名 # 對特定資料庫中的特定表授權 grant 許可權 on 資料庫.* to 賬戶@主機名 # 對特定資料庫中的所有表給與授權 grant 許可權1,許可權2,許可權3 on *.* to 賬戶@主機名 # 對所有庫中的所有表給與多個授權 grant all privileges on *.* to 賬戶@主機名 # 對所有庫和所有表授權所有許可權 ############### # 允許root使用者遠端登入 # mysql好像是使用:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; grant all privileges on *.* to root@'%' identified by 'centos' # 允許root使用者在任意主機地址透過centos密碼登入
-
sql資料庫備份
# 在shell當中匯出備份 mysqldump -u root -p --all-databases > /tmp/db.sql mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql # 然後可以在新資料庫讀取檔案 mysql -uroot -p < /tmp/db.sql # 或者進入mysql當中執行 source /tmp/db.sql
mysql忘記密碼怎麼辦
-
透過root使用者登入,進入etc中mysql的配置檔案,並修改解除許可權
# 在mysqld系列標籤當中新增引數 [mysqld] # 關閉登入授權 skip-grant-tables # 出來重啟mysql systemctl restart mariadb # 不是yum安裝的話,可能要直接把程序停了
-
進入資料庫修改密碼
mysql -uroot -p # 此時已進入,修改密碼sql語句 use mysql; update user set authentication string=password("新密碼") where host="localhost" and user="root"; # 重新整理授權 flush privileges;
-
最後注掉skip-grant-tables的授權跳過,就可以輸密碼重新登入了。
出現中文沒法寫入資料庫怎麼辦
-
先進入資料庫檢視編碼
-- 預設已進入資料庫 \s
輸出如下:
-
如果圖中不是使用utf8編碼的,就需要修改配置檔案並重新啟動mysql
主要的配置修改如下:
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci log-error=/var/log/mysqld.log [client] default-character-set=utf8 [mysql] default-character-set=utf8
-
重啟mysql即可讀取中文。