Ubuntu20下安裝mysql8

一、下載

[root@root ~]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz

二、解壓並重命名

[root@root ~]# tar -xJvf mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz

[root@root ~]# mv mysql-8.0.23-linux-glibc2.12-x86_64 mysql

三、將mysql移到/usr/local/ 目錄

[root@root ~]# mv /root/mysql /usr/local/

四、新建mysql用戶及組

[root@root ~]# groupadd mysql
[root@root ~]# useradd -m -r -g mysql mysql

五、添加logs目錄

root@simon-pc:/usr/local/mysql# mkdir logs

六、設置/usr/local/mysql/文件夾的用戶權限

[root@root ~]# cd /usr/local/mysql/
[root@root mysql]# chown -R mysql:mysql ./

七、新建my.cnf 文件

[root@root ~]# vim /etc/my.cnf

[root@root mysql]# chmod 777 /etc/my.cnf

內容如下:

複製代碼
 1 [mysqld]
 2 server-id = 1
 3 port = 3306
 4 bind-address = 0.0.0.0
 5 max_connections = 5000
 6 mysqlx_port = 33060
 7 mysqlx_socket = /tmp/mysqlx.sock
 8 basedir = /usr/local/mysql
 9 datadir = /usr/local/mysql/data
10 socket = /tmp/mysql.sock
11 pid-file = /tmp/mysqld.pid
12 slow_query_log = ON
13 slow_query_log_file = /usr/local/mysql/logs/slow.log
14 log-error = /usr/local/mysql/logs/error.log
15 long_query_time = 0.2
16 log-bin = bin.log
17 relay-log = relay.log
18 binlog_format = ROW
19 relay_log_recovery = 1
20 character-set-client-handshake = FALSE
21 character-set-server = utf8mb4
22 collation-server = utf8mb4_unicode_ci
23 init_connect ='SET NAMES utf8mb4'
24 innodb_buffer_pool_size = 1G
25 join_buffer_size = 128M
26 sort_buffer_size = 2M
27 read_rnd_buffer_size = 2M
28 log_timestamps = SYSTEM
29 lower_case_table_names = 1
30 default-authentication-plugin = mysql_native_password
複製代碼

注意:

13-14行:日誌文件保存目錄,默認沒有logs目錄,需要手工添加

29行:設置mysql訪問大小寫不敏感

注意:my.cnf在數據庫初始化前就要存在,如果初始化完成後再添加該文件,配置不會生效

八、初始化mysql數據庫,生成默認密碼

[root@root mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

執行後,默認在logs目錄下的error.log文件中生成默認口令

 

 

 九、註冊服務

具體參看:https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html

1、創建mysqld.service

1 cd /usr/lib/systemd/system
2 touch mysqld.service
3 chmod 644 mysqld.service

2、添加內容如下:

複製代碼
 1 [Unit]
 2 Description=MySQL Server
 3 Documentation=man:mysqld(8)
 4 Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
 5 After=network.target
 6 After=syslog.target
 7 
 8 [Install]
 9 WantedBy=multi-user.target
10 
11 [Service]
12 User=mysql
13 Group=mysql
14 
15 # Have mysqld write its state to the systemd notify socket
16 Type=notify
17 
18 # Disable service start and stop timeout logic of systemd for mysqld service.
19 TimeoutSec=0
20 
21 # Start main service
22 ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
23 
24 # Use this to switch malloc implementation
25 EnvironmentFile=-/etc/sysconfig/mysql
26 
27 # Sets open_files_limit
28 LimitNOFILE = 10000
29 
30 Restart=on-failure
31 
32 RestartPreventExitStatus=1
33 
34 # Set environment variable MYSQLD_PARENT_PID. This is required for restart.
35 Environment=MYSQLD_PARENT_PID=1
36 
37 PrivateTmp=false
複製代碼

3、添加自啓動

複製代碼
systemctl enable mysqld.service
或者
//配置環境變量
[root@root mysql]# vim /etc/profile
添加如下內容:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
//讓配置文件立馬生效
[root@root mysql]# source /etc/profile
複製代碼

4、常用命令

systemctl {start|stop|restart|status} mysqld

十、添加lib庫搜索

// /etc/ld.so.conf 這個文件記錄了編譯時使用的動態鏈接庫的路徑,告訴鏈接器去哪個路徑下尋找鏈接時需要用到的庫,如果找不到,就會提示鏈接錯誤。
如果我們安裝了第三方的庫,而沒有將它放在鏈接器可以找到的目錄,則運行使用這些第三方庫的程序時,會提示找不到庫。
[root@root mysql]# vim /etc/ld.so.cnf
添加如下內容:
include ld.so.conf.d/*.conf
/usr/local/mysql/lib

十一、啓動和查看服務

//啓動MySQL服務

systemctl start mysqld

查看服務

systemctl status mysqld

十二、登錄mysql及後操作

1、登錄mysql

[root@root mysql]# mysql -u root -p

首次登錄用初始化時的密碼登錄

2、修改root口令 

//修改密碼
mysql> alter user 'root'@'localhost' identified by 'root';

3、查看數據庫

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

4、建立遠程連接

use mysql;
select host,user from user;
create user 'root'@'%' identified by 'root';
grant all on *.* to 'root'@'%';
flush privileges;
alter user 'root'@'%' identified by 'root' password expire never;
alter user 'root'@'%' identified with mysql_native_password by 'root';
flush privileges;

 

常見錯誤

一、設置libtinfo.so.5

執行mysql -u root -p後,有可能會出現如下錯誤:

mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

該問題是由於缺少文件造成的,可通過ldd mysql命令查看到缺失libtinfo.so.5,可到https://pan.baidu.com/s/1SFza-Fa2-CVQh955XsJsZA,下載該文件,並拷貝到/lib/x86_64-linux-gnu目錄下即可。

二、找不到mysql命令的解決辦法

由於系統默認會查找/usr/bin下的命令,如果這個命令不在這個目錄下,當然會找不到命令,我們需要做的就是映射一個鏈接到/usr/bin目錄下,相當於建立一個鏈接文件

ln -s /usr/local/mysql/bin/mysql /usr/bin

 三、Ubuntu20下Mysql連接出現cant connect to mysql server through socket '/tmp/mysql.sock'

mysql.sock 一般不是在 /tmp/mysql.sock 就是在 /var/lib/mysql/mysql.sock 這裏,沒有的話就用

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
或者是

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
連接一下即可

可以參考:https://zhuanlan.zhihu.com/p/87063881

四、初始化數據庫出現:bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

原因是沒有安裝libaio.so.1,安裝即可。

apt-get install libaio1 libaio-dev

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