目標:
1.自定義mysql安裝目錄
2.自定義mysql數(shù)據(jù)目錄
3.正確安裝并啟動mysql
4.輸入密碼正確登錄
說明:
本文mysql下載目錄 /usr/download
本文mysql安裝目錄 /software/mysql
本文mysql數(shù)據(jù)目錄 /file/data/mysql
正文所有命令都是絕對路徑
環(huán)境:阿里云CentOS 7.5 64位
1.創(chuàng)建相關(guān)目錄
(1) 創(chuàng)建壓縮包下載目錄
# cd usr // 進入用戶目錄
# mkdir download // 創(chuàng)建安裝包目錄
# ls // 查看
bin etc include lib64 local share tmp
download games lib libexec sbin src
(2) 創(chuàng)建mysql安裝目錄
# cd / // 回到跟目錄
# mkdir software // 創(chuàng)建應(yīng)用安裝目錄
# cd software // 進入應(yīng)用目錄
刪除 # mkdir mysql // 創(chuàng)建mysql安裝目錄
(3) 創(chuàng)建mysql數(shù)據(jù)目錄
# cd / // 回到跟目錄
# mkdir file // 創(chuàng)建文件目錄
# cd file // 進入文件目錄
# mkdir data // 創(chuàng)建數(shù)據(jù)目錄
# cd data // 進入數(shù)據(jù)目錄
# mkdir mysql // 創(chuàng)建mysql數(shù)據(jù)目錄
2.在線下載mysql5.7
官網(wǎng)地址:https://downloads.mysql.com/archives/community/
下載地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
# cd / // 回到根目錄
# cd usr/download // 進入安裝包下載目錄
# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz // 下載安裝包路召,等待下載完成
3.解壓
在當前目錄 /usr/download
# tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
# ls // 查看解壓結(jié)果
# ls
mysql-5.7.29-linux-glibc2.12-x86_64
mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
4.復制解壓后的mysql目錄到系統(tǒng)的本地軟件目錄
在當前目錄下 /usr/download/
# cp mysql-5.7.29-linux-glibc2.12-x86_64 /software/mysql -r // 執(zhí)行過程稍長钞楼,也可以用 mv 命令直接移動
命令執(zhí)行結(jié)束后到software/mysql 下看是否復制成功
# cd / // 回到根目錄
# # cd software/mysql/ // 到文件安裝目錄
# ls
bin docs include lib LICENSE man README share support-files
看到以上表示已經(jīng)成功解壓到指定目錄
5.創(chuàng)建mysql用戶組和mysql用戶
# cd / // 回到根目錄
# groupadd mysql // 創(chuàng)建mysql用戶組
# useradd -r -g mysql mysql // 創(chuàng)建mysql用戶
如果出現(xiàn)
groupadd: group 'mysql' already exists
表示已經(jīng)存在mysql用戶組(useradd時同理),則繼續(xù)下一步
6.關(guān)聯(lián)myql用戶到mysql用戶組中
當前操作在根目錄下
#chown -R mysql:mysql /software/mysql/
#chown -R mysql:mysql /file/data/mysql/
#chown -R mysql /software/mysql/
#chown -R mysql /file/data/mysql
7.更改mysql安裝文件夾mysql/的權(quán)限
當前操作在根目錄下
# chmod -R 755 /software/mysql/
8.安裝libaio依賴包
# yum search libaio // 查詢是否已安裝libaio依賴包
# yum install libaio // 如果沒安裝,則安裝
9.初始化mysql命令
# cd /software/mysql/bin // 進入應(yīng)用安裝的bin目錄下
# ./mysqld --user=mysql --basedir=/software/mysql --datadir=/file/data/mysql --initialize // 初始化垢揩,注意目錄
執(zhí)行成功后最后一句為
2020-06-14T06:33:29.412232Z 1 [Note] A temporary password is generated for root@localhost: *a%idaUrn1r_
其中@localhost:后面為初始密碼
10.啟動mysql服務(wù)
# cd / // 回到根目錄
# sh /software/mysql/support-files/mysql.server start // 啟動服務(wù)
上面啟動mysql服務(wù)命令是會報錯的,因為沒有修改mysql的配置文件状囱,報錯內(nèi)容大致如下:
/software/mysql/support-files/mysql.server: line 239: my_print_defaults: command not found
/software/mysql/support-files/mysql.server: line 259: cd: /usr/local/mysql: No such file or directory
Starting MySQLCouldn't find MySQL server (/usr/local/mysql/[FAILED]ld_safe)
11.修改Mysql配置文件
當前為根目錄
# vim /software/mysql/support-files/mysql.server // 編輯文件
編輯前
# Set some defaults
mysqld_pid_file_path=
if test -z "$basedir"
then
basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
if test -z "$datadir"
then
datadir=/usr/local/mysql/data
fi
sbindir=/usr/local/mysql/bin
libexecdir=/usr/local/mysql/bin
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
libexecdir="$basedir/libexec"
fi
編輯后
# Set some defaults
mysqld_pid_file_path=
if test -z "$basedir"
then
basedir=/software/mysql // 修改了這里
bindir=/software/mysql/bin // 修改了這里
if test -z "$datadir"
then
datadir=/file/data/mysql // 修改了這里
fi
sbindir=/software/mysql/bin // 修改了這里
libexecdir=/software/mysql/bin // 修改了這里
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
libexecdir="$basedir/libexec"
fi
保存并退出
12.將mysql腳本復制到/etc/init.d
# cp /software/mysql/support-files/mysql.server /etc/init.d/mysqld // 復制
# chmod 755 /etc/init.d/mysqld // 賦予權(quán)限
13.修改my.cnf文件
# vi /etc/my.cnf // 編輯my.cnf文件
修改為以下內(nèi)容
[client]
no-beep
socket =/software/mysql/mysql.sock
# pipe
# socket=0.0
port=3306
[mysql]
default-character-set=utf8
[mysqld]
basedir=/software/mysql
datadir=/file/data/mysql
port=3306
pid-file=/software/mysql/mysqld.pid
#skip-grant-tables
skip-name-resolve
socket = /software/mysql/mysql.sock
character-set-server=utf8
default-storage-engine=INNODB
explicit_defaults_for_timestamp = true
# Server Id.
server-id=1
max_connections=2000
query_cache_size=0
table_open_cache=2000
tmp_table_size=246M
thread_cache_size=300
#限定用于每個數(shù)據(jù)庫線程的棧大小涉馅。默認設(shè)置足以滿足大多數(shù)應(yīng)用
thread_stack = 192k
key_buffer_size=512M
read_buffer_size=4M
read_rnd_buffer_size=32M
innodb_data_home_dir = /file/data/mysql
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=16M
innodb_buffer_pool_size=256M
innodb_log_file_size=128M
innodb_thread_concurrency=128
innodb_autoextend_increment=1000
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
join_buffer_size=128M
max_allowed_packet=1024M
max_connect_errors=2000
open_files_limit=4161
query_cache_type=0
sort_buffer_size=32M
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000
#批量插入數(shù)據(jù)緩存大小,可以有效提高插入效率枯跑,默認為8M
bulk_insert_buffer_size = 64M
interactive_timeout = 120
wait_timeout = 120
log-bin-trust-function-creators=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
保存并退出
14.啟動mysql
# /etc/init.d/mysqld start // 啟動
也可以這樣啟動
# cd software/mysql/support-files/
# sh mysql.server start
啟動時
Starting MySQL.Logging to '/file/data/mysql/iZ8vbadihs67tm2a228lw4Z.err'.
... [ OK ]
第一行為日志
第二行為狀態(tài)惨驶,OK 表示啟動成功
若啟動時報錯
Starting MySQL.The server quit without updating PID file
可能時權(quán)限不組,重新執(zhí)行第 6 步
15.登錄mysql
當前為根目錄
# mysql -uroot -p
-bash: mysql: command not found
提示找不到mysql命令敛助,原因:這是由于系統(tǒng)默認會查找/usr/bin下的命令粗卜,如果這個命令不在這個目錄下,當然會找不到命令纳击,我們需要做的就是映射一個鏈接到/usr/bin目錄下续扔,相當于建立一個鏈接文件。
# ln -s /software/mysql/bin/mysql /usr/bin // 第一個字母是小寫 L
再執(zhí)行登錄命令mysql -u root -p
焕数,密碼為第 9 步中的密碼纱昧,密碼輸入正確后如圖:
16.成功進入但是無法操作數(shù)據(jù)庫
mysql> use mysql
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改密碼
mysql> ALTER USER USER() IDENTIFIED BY 'TesT22$_';
以上表示密碼修改為 TesT22$_
注意以 分號 結(jié)尾
輸出以下表示修改成功
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 3
Current database: *** NONE ***
Query OK, 0 rows affected (0.00 sec)
mysql>
嘗試執(zhí)行
mysql> use mysql
提示以下錯誤
No connection. Trying to reconnect...
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
ERROR:
Can't connect to the server
mysql>
這是因為root登錄權(quán)限不足,具體修改方法如下
mysql> exit // 先退出mysql命令行
Bye
// 當前為根目錄
# /etc/init.d/mysqld stop // 停止mysql
Shutting down MySQL.. [ OK ]
# cd software/mysql/bin/ // 進入mysql安裝的命令行目錄
# sh mysqld_safe --skip-grant-tables & // 安全模式登錄mysql
mysql // 在上一步之后直接輸入mysql堡赔,進入 mysql命令行
mysql> use mysql; // 輸入這句识脆,成功后會提示如下
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set host = '%' where user = 'root'; // 輸入這句,成功后會提示如下
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select host,user from user; // 查看是否修改成功善已,成功后提示如下
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql> flush privileges; // 刷新數(shù)據(jù)庫
Query OK, 0 rows affected (0.00 sec)
mysql> exit // 退出
重啟mysql
# cd / // 回到根目錄
# etc/init.d/mysqld restart // 重啟灼捂,等待重啟完成
# mysql -u root -p // 然后再輸入密碼即可
重要
如果從第15步不記得,則直接重新改密碼
操作前確認mysql停止服務(wù)
# /etc/init.d/mysqld stop
# cd software/mysql/bin // 進入mysql安裝的bin目錄
# sh mysqld_safe --skip-grant-tables & // 安全模式啟動
mysql // 直接鍵入 mysql换团,進入mysql命令行
myql> update mysql.user set authentication_string=password('TesT22$_') where user='root'; // 密碼修改為 TesT22$_
mysql> flush privileges; // 刷新權(quán)限
mysql> exit; // 退出
mysql> select host,user,authentication_string from user; // 查看是否更新成功
參考文章:
1.安裝到指定目錄
linux安裝mysql詳細步驟
2.下載和復制
linux系統(tǒng)安裝mysql
3.登錄成功后提示修改密碼
【mysql】You must reset your password using ALTER USER statement before executing this statement報錯處理
4.mysql command not found
解決linux mysql命令 bash: mysql: command not found 的方法
5.使用 update 更新 authentication_string和修改 etc/my.cnf 文件無密碼進入mysql
在MySQL登錄時出現(xiàn)Access denied for user 'root'@'localhost' (using password: YES) 拒絕訪問悉稠,并可修改MySQL密碼
6.安裝 libaio 庫
linux下安裝mysql5.6,指定安裝目錄
7.通過 mysqld_safe 安全模式無密碼登錄mysql艘包;有和無原密碼 更新密碼的猛;修改 host 為 % ;重要
linux修改mysql數(shù)據(jù)庫密碼
8.刷新權(quán)限(必須步驟):flush privileges;
linux中修改mysql數(shù)據(jù)庫密碼
9.MySQL5.7及后續(xù)版本 改密碼無password字段
10.linux 為 my.cnf想虎;windows 為 my.ini
my.ini文件參數(shù)中文注釋
11.查看mysql user表 Host列為%是什么意思
12.linux 常用命令
linux 查看數(shù)據(jù)庫和表 mysql 命令
13.正確修改密碼 重要
Mysql5.7忘記root密碼及mysql5.7修改root密碼的方法
14.遠程無法連接mysql
本地無法連接遠程服務(wù)器
常用命令
// 啟動mysql
# /etc/init.d/mysqld start
// 停止mysql
# /etc/init.d/mysqld stop
// 重啟mysql
# /etc/init.d/mysqld restart
// 以上需要執(zhí)行第 12.將mysql腳本復制到/etc/init.d
// 進入mysql的bin目錄
# cd software/mysql/bin
// 安全模式啟動卦尊,需要cd 到mysql的bin目錄
# sh mysqld_safe --skip-grant-tables &
// 鍵入
mysql
// 登錄
# mysql -u root -p
// 查看數(shù)據(jù)庫
mysql> show databases;
//查看表說明
mysql> describe user;
// 查看mysql端口號
mysql> show variables like 'port';
// 切換數(shù)據(jù)表
mysql> use mysql;
// 更新密碼為 TesT22$_
update mysql.user set authentication_string=password('TesT22$_') where user='root';
// 刷新權(quán)限
mysql> flush privileges;
// 退出
mysql> exit;
// 查看是否更新成功
select host,user,authentication_string from user;
// 查看mysql狀態(tài)
# service mysqld status