下載
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