Ubuntu20下安装mysql8

一、下载

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

二、解压并重命名

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

[root@root ~]# mv mysql-8.0.27-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 644 /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

 五、MySQL无法启用/etc/my.cnf配置文件,重启报错Warning: World-writable config file ‘/etc/my.cnf’ is ignored的解决方法

 大概意思是权限全局可写,任何一个用户都可以写,即给与的权限太大。mysql担心这种文件被其他用户恶意修改,所以MySQL服务在启动或者关闭时,忽略掉这个配置文件。这样mysql无法关闭。该配置文件的配置项自然也就无法生效。

修改my.cnf文件的权限为644 设置为用户可读写,其他用户不可写:

chmod 644 /etc/my.cnf

 

 

 

 

posted @ 2021-06-08 13:16  疯狗强尼  阅读(765)  评论(0编辑  收藏  举报