Cenots8 安裝mysql

安裝mysql

前言

在工作中,我們可能用到的數據庫是sqlserver或oracle這種龐大的數據庫。但是,當我們在學習的時候,大多情況都會選擇安裝mysql,因爲它體積更小,開源,安裝簡單,且功能也比較強大。下面,我將在虛擬機中CentOS 8中安裝mysql(解壓版,安裝快速;yum源安裝要下載太慢)。

注意:第一次使用centos安裝mysql時,可以考慮嚴格按照教程進行安裝,避免出錯。等自己熟練了可以將其卸載,然後再安裝到自己想要的目錄中去。

安裝前先卸載 mysql :卸載mysql,刪除mysql相關文件

第一步 下載MySQL

第一種使用網盤下載:mysql-8.0.19-linux-glibc2.12-x86_64.tar 提取碼: zw9y

第二種使用官網下載地址下載:mysql官網下載地址
在這裏插入圖片描述
將下載好的mysql上傳至服務器

第二步 解壓,創建文件夾

#1.解壓tar
[root@localhost: ~]#tar xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

#2.複製解壓後的文件到/usr/local/mysql
[root@localhost: ~]#cp mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql -r

#3.在mysql目錄下,創建文件夾
[root@localhost: ~]#cd /usr/local/mysql
[root@localhost: mysql]#mkdir -p {data,binlogs,log,etc,run}

修改配置文件

[root@localhost: mysql]#vim ./etc/my.cnf

my.cnf的文件內容

[client]
port = 3306
socket = /usr/local/mysql/run/mysql.sock
 
[mysqld]
port = 3306
socket = /usr/local/mysql/run/mysql.sock
pid_file = /usr/local/mysql/run/mysql.pid
datadir = /usr/local/mysql/data
default_storage_engine = InnoDB
max_allowed_packet = 512M
max_connections = 2048
open_files_limit = 65535
 
skip-name-resolve
lower_case_table_names=1
 
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
 
 
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 2048M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 0
 
 
key_buffer_size = 64M
 
log-error = /usr/local/mysql/log/mysql_error.log
log-bin = /usr/local/mysql/binlogs/mysql-bin
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/log/mysql_slow_query.log
long_query_time = 5
 
 
tmp_table_size = 32M
max_heap_table_size = 32M
#query_cache_type = 0
#query_cache_size = 0
 
server-id=1

如果文件目錄不是這樣的可以使用vim的批量替換命令進行替換:

:%s/源字符串/目的字符串/g
例如本例(這裏的路徑反斜槓需要轉義):
:%s/\/usr\/local\/mysql/\/apps\/mysql-8.0.20-linux-glibc2.12-x86_64/g

創建mysql用戶和組,修改mysql目錄的權限

#1.創建mysql系統用戶
[root@localhost: mysql]#useradd -r mysql -s  /sbin/nologin

#2.檢查mysql用戶和組是否創建成功
[root@localhost: mysql]#getent passwd
[root@localhost: mysql]#getent group

#3.修改mysql目錄權限
[root@localhost: mysql]#chown -R mysql:mysql /usr/local/mysql

初始化mysql

#這是我在centos8上初始化完後,沒有任何提示
[root@localhost: mysql]#bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

#下面是我在centos7上初始化後,緊接着就提示了mysql的密碼。記住密碼(vg9I179(r?:v)
# 2020/4/6記錄: my.cnf配置出錯了纔會打印出來
[root@centos7: mysql]#bin/mysqld --initialize --user=mysql --basedir=/apps/mysql --datadir=/apps/mysql/data
2020-04-06T04:38:36.830415Z 0 [System] [MY-013169] [Server] /apps/mysql/bin/mysqld (mysqld 8.0.19) initializing of server in progress as process 13184
2020-04-06T04:38:39.591135Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: vg9I179(r?:v

查看mysql的密碼

# centos8 這裏密碼就是 M?Vi%Yxgj2ih
[root@localhost: mysql]#cat log/mysql_error.log | grep password
2020-04-05T03:35:56.147361Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: M?Vi%Yxgj2ih

做成服務


[root@localhost: mysql]#cp support-files/mysql.server /etc/init.d/mysql
[root@localhost: init.d]#chkconfig --add mysql
[root@localhost: init.d]#chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysql          	0:off	1:off	2:on	3:on	4:on	5:on	6:off

# 添加mysql到環境變量中,並讓其立即生效
[root@localhost: mysql]#echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost: mysql]#. /etc/profile

啓動服務

# start:啓動;status:查看服務狀態;stop:暫停服務;restart:重啓
systemctl start mysql
systemctl status mysql

登錄(如果有錯誤,根據報錯信息解決問題)

#庫文件夾丟失
[root@localhost: mysql]#mysql -uroot -p
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

# 查看二進制程序所依賴的庫文件
[root@localhost: mysql]#cd bin
# 有not fount就表示丟失了庫文件需要下載
[root@localhost: bin]#ldd mysql
	...省略掉有庫文件的輸出
	libtinfo.so.5 =>  not found
	...省略掉有庫文件的輸出
# 使用find命令查看系統內有沒有這個庫文件
[root@localhost: bin]#find / -name libtinfo.so.5
# 如果有就將這個文件路徑複製出來,然後使用ldconfig /usr/lib/libtinfo.so.5

如果操作系統上沒有這個庫文件就下載:
下載 libtinfo.so.5:百度雲:c8bk
將文件拷貝到服務器的 /usr/lib/ 下

[root@localhost: bin]#cd /usr/lib
# 上傳庫文件libtinfo.so.5
[root@localhost: lib]#rz
[root@localhost: lib]#cd /usr/local/mysql/bin
[root@localhost: bin]#ldconfig /usr/lib/libtinfo.so.5
[root@localhost: bin]#ldconfig
# 查看libtinfo.so.5是否有內容
[root@localhost: bin]#ldd mysql

登錄報錯:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/run/mysql.sock' (2)

解決辦法:轉載別人的博客

登錄修改mysql的密碼

#查看MySQL是否啓動
[root@localhost: bin]#systemctl status mysql
[root@localhost: bin]#systemctl start mysql
[root@localhost: bin]#mysql -uroot -p
#修改密碼爲123456
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
# 退出重試登陸密碼
mysql> exit

總結

2020/4/6,我將mysql的安裝目錄改成了/apps/mysql下,並且也相應的修改了my.cnf的內容,初始化時也修改了目錄。但是在初始化時有提示信息,密碼也打印在終端了,然後我繼續安裝。最後發現登錄不了,並且報錯:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
使用 find / -name mysqld.sock 找不到該文件。然後我重新使用該文檔上面的默認安裝了一遍,發現可以正常使用,正常登錄。所以在這裏判斷是my.cnf文件配置錯了,後面有時間會詳細瞭解下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章