阿里云ECS配置之MYSQL


下載

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

安裝


  • 解壓
tar -xvzf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
  • 重命名文件夾,把解壓后的文件COPY到/usr/local/mysql目錄
cp -r mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql
  • 添加mysql用戶組以及用戶
groupadd mysql
useradd -r -g mysql mysql
  • 創建mysql數據目錄,新目錄不存在則創建
    數據庫數據默認目錄datadir=/var/lib/mysql,可通過vim /etc/my.cnf 查看
cd /usr/local/mysql/
mkdir -p ./data/mysql
  • 修改目錄權限
chown -R mysql:mysql ./
  • 初始化數據庫
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
image.png

安裝時如果遇到以下上錯誤,則需要先安裝另一個軟件

yum -y install autoconf
  • 安裝完成添加啟動服務,并授權
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
  • 初始化啟動腳本
cp support-files/my-default.cnf /etc/my.cnf
  • 配置啟動腳本
vi /etc/init.d/mysqld

修改以下配置項

basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
  • 現在可以啟動服務
service mysqld start
  • 測試連接
./mysql/bin/mysql -uroot
  • 加入環境變量,可以讓mysql在任何地方運行
export PATH=$PATH:/usr/local/mysql//bin
source /etc/profile

至此,mysql已運行起來了,接下來做些配置

  • 查看端口號
    登陸mysql,執行以下命令,默認端口為3306


    image.png
  • 修改端口號
    編輯/etc/my.cnf文件,增加端口參數

vim /etc/my.cnf
[mysqld]
port=3506
  • 重啟mysql
service mysqld restart
  • 再次查詢mysql 端口,端口已發生改變


    image.png

配置ECS安全規則


雖然按上面步驟已安裝就啟動了mysql,但需要開放出端口才可以遠程訪問,增加以下規則

允許  自定義 TCP 13306/13306 地址段訪問   XX.XX.XX.0/24

現在通過客戶端去訪問mysql,會提示10038錯誤,如下圖


image.png

需要開放遠程登陸權限,解決方案如下

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

新建用戶以及數據庫并授權


一般情況下,root用戶不對外開放,所以需要新建用戶以及數據庫并進行授權

  • root登陸mysql創建數據庫
create database nacos default character set utf8mb4 collate utf8mb4_unicode_ci;

  • 授權db_egold數據庫給新用戶
grant all privileges on `db_egold`.* to 'egoldtest'@'%' identified by 'yourpasswd';

flush privileges;

查看用戶,新建的用戶已創建,即可以通過遠程登陸訪問


image.png

其它問題


  • 大小寫
    遇到一個問題,總提示某個表不存在,但這個表明明是存在于數據庫中的,后面查才發現默認是區分大小寫的,我們需要改成不區分大小寫
vim /etc/my.cnf

在[mysqld]下加入一行:

lower_case_table_names=1

然后重啟,即可解決

  • 修改密碼,忘記密碼的事情經常發布
set password for username@localhost = password('密碼');  

-字符集問題
學會查看默認字符集

show variables like'%char%';

設置默認字符集,需要在/etc/my.cnf的[mysqd]下面增加

character_set_server=utf8

character_set_server = utf8

修改已有數據庫字符集
最簡單可以通用Navicat for mysql直接修改


image.png
  • 忘記密碼
    1.修改MySQL的登錄設置:
    vim  /etc/my.cnf 
在[mysqld]的段中加上一句:skip-grant-tables 

例如:

[mysqld] 

datadir=/var/lib/mysql 

socket=/var/lib/mysql/mysql.sock 

skip-grant-tables 

保存并且退出

2、重新啟動mysql

service mysqld restart

3、登錄并修改登錄密碼

#mysql

#use mysql

update user set Password=password('密碼') where  user='root' ;

quit;

4、強配置改回來

去掉 skip-grant-tables

5、重新啟動mysql

service mysqld restart
1. 打開一個終端窗口

2. 輸入 sudo /usr/local/mysql/support-files/mysql.server stop  //也可以在活動監視器里面進程里面殺掉mysqld

3. 輸入 sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

4. 這時不要關窗口,再打開一個終端窗口

5. 輸入 sudo /usr/local/mysql/bin/mysql -u root

6. 這時候會出現mysql>了,輸入use mysql

7. 最后輸入 update user set authentication_string=password('你需要設置的密碼') where user='root';
到此結束,可以重啟下mysql server
8.  SET PASSWORD = PASSWORD('newpassward');


6、設置默認字符集

[client]
default_character_set=utf8mb4



[mysqld]
port=13306

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql

character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip_character_set_client_handshake=true

lower_case_table_names=1

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES




[mysql]
default_character_set=utf8mb4

  • 生成刪除語句
SELECT distinct CONCAT('delete from ',table_name, ' where 1=1;') FROM information_schema.tables WHERE  table_type='base table' and TABLE_NAME LIKE 'shop_%';

備份數據庫

mysqldump -hlocalhost -P3306 -uroot -p123456 db_cinema> db_cinema_20200923.sql;

安裝后,root密碼是空的,需要初始化

···
update user set password=PASSWORD('fads') where User='root';
···

key過長

set global innodb_large_prefix=on;
set global innodb_file_per_table=on;
set global innodb_file_format=BARRACUDA;
set global innodb_file_format_max=BARRACUDA;

啟動失敗時查看日志

/usr/local/mysql/data/mysql/xxx.err
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容