centos7安裝mysql

longsihua2003發表於2024-09-09

centos7安裝mysql8

解除安裝MariaDB

MariaDB
MySQL 的一個分支,主要由開源社群維護

  1. CentOS 7+ 不再預設使用 MySQL 資料庫,而是 MariaDB 資料庫。
  2. 直接安裝 MySQL 會與 MariaDB 的檔案衝突。
    # 使用yum解除安裝
    yum remove mariadb

安裝mysql壓縮包

  1. 去官網找mysql官網
    img
  2. 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

配置檔案

  1. 先配置使用者和賦予許可權(直接往下複製就行)(需要自定義就自定義,資料檔案丟/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
  1. 配置檔案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
  1. 搞完了直接初始化(報錯了就大概是流程寫錯了)
  • --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
  1. 啟動/登入/改密碼
# 啟動 (後面加個&讓終端不被掛起,打個回車就能繼續命令)
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;
  1. 之後日常使用可以在命令列修改密碼
# 修改密碼
mysqladmin -u使用者名稱 -p舊密碼 password 新密碼

日常使用mysql

  1. mysql未啟動(注意配置檔案位置)
    mysqld_safe --defaults-file=/opt/mysql8/conf/my.conf &
  2. mysql進入
    mysql -uroot -p
    然後輸入密碼就行
  3. 在命令列
    退出命令列exit
    關閉mysql服務shutdown(注意別在linux上輸入,不然給關機了)

對了,需要配置遠端一類或者參考大佬的文章

https://www.cnblogs.com/zhourx/p/17558946.html

補充一下mariadb的使用。

因為做補充,不用很詳細的語句,可以倉庫這位博主的部落格:https://www.cnblogs.com/pyyu/p/9467289.html

  1. 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
  1. 基本使用

    和yum操作平常的服務一樣的

        systemctl start mariadb  #啟動MariaDB
    
        systemctl stop mariadb  #停止MariaDB
    
        systemctl restart mariadb  #重啟MariaDB
    
        systemctl enable mariadb  #設定開機啟動
    
  2. 資料庫基本操作

  • 新安裝的操作:

        # 進行初始化
        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忘記密碼怎麼辦

  1. 透過root使用者登入,進入etc中mysql的配置檔案,並修改解除許可權

        # 在mysqld系列標籤當中新增引數
        [mysqld]
        # 關閉登入授權
        skip-grant-tables
    
        # 出來重啟mysql
        systemctl restart mariadb
        # 不是yum安裝的話,可能要直接把程序停了 
    
  2. 進入資料庫修改密碼

        mysql -uroot -p
    
        # 此時已進入,修改密碼sql語句
        use mysql;
        update user set authentication string=password("新密碼") where host="localhost" and user="root";
        # 重新整理授權
        flush privileges;
    
  3. 最後注掉skip-grant-tables的授權跳過,就可以輸密碼重新登入了。

出現中文沒法寫入資料庫怎麼辦

  1. 先進入資料庫檢視編碼

        -- 預設已進入資料庫
        \s
    

    輸出如下:
    img

  2. 如果圖中不是使用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
    
  3. 重啟mysql即可讀取中文。

相關文章