一、下載
[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