侧边栏壁纸
  • 累计撰写 208 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

ubuntu20.04安装mysql 8.0+版本 ,并自定义存储路径

Wake
2022-08-23 / 0 评论 / 5 点赞 / 2,294 阅读 / 1,350 字

1.如果之前有安装mysql服务,还有服务或者配置文件残留,使用如下命令进行卸载清除:

1.卸载MySQL
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

这将卸载MySQL服务器、客户端和常用库,并清除无用的依赖项和缓存文件。

2.删除MySQL数据目录
sudo rm -rf /var/lib/mysql

这将删除MySQL数据目录中的所有数据。请注意,这将永久删除所有MySQL数据库和表,因此在执行此操作之前,请备份任何重要的数据。
Ubuntu 20.04下使用以下命令即可进行MySQL(重新)安装(一般会安装mysql8.0以上的版本):

sudo apt-get update
sudo apt-get install mysql-server

这将更新包列表并重新安装MySQL服务器。在安装过程中,系统将提示您创建MySQL root用户密码和其他配置选项。

启动和关闭mysql服务器:

service mysql start
service mysql stop

image-1661256810100

设置MySQL开机自启

sudo systemctl status mysql

  • 确认是否启动成功:
sudo netstat -tap | grep mysql

image-1661256841377

  • 进入mysql shell界面: mysql -u root -p
    image-1661256861562

2.自定义mysql的存储路径为(/data/mysql)

如果不想自定义存储路径可以选择忽略。
默认情况下,数据库保存在 /var/lib/mysql 目录下。由于一般情况下 我 会单独放到 /data/mysql的目录下。

注意,单纯的 mv 可不行,必须进行一些配置才能让 mysql 知道自己数据的新家在哪。
首先把 mysql 服务停下来,然后把它的数据拷贝的目的地,也就是把 /var/lib/mysql 拷贝到 /data/mysql。
注意 cp 命令的参数,-arp 是递归复制并且保留权限。
另外注意,如果有改目录名称的需求,一定要复制完毕之后再改名。例如,mv mysql mysqldata,不然直接复制的话权限可能会出问题。

接下来进行配置mysql配置文件:
默认配置文件路径:/etc/mysql/mysql.conf.d/mysqld.cnf
image-1679043402548

接着还有一处地方要进行修改:

sudo vim /etc/apparmor.d/usr.sbin.mysqld 

果然在这个文件里找到了修改之前的 mysql 数据库路径:/var/lib/mysql。
改成这个样子:

# Allow data dir access
  # /var/lib/mysql/ r,
  # /var/lib/mysql/** rwk,
  /data/mysql/ r,
  /data/mysql/** rwk,

重启 apparmor 服务:

sudo service apparmor restart

没有报错就算重启成功了。
接下来数据库就可以正常开启了

一、解决利用sqoop导入MySQL中文乱码的问题 导致导入时中文乱码的原因是character_set_server默认设置是latin1,如下图。

image-1661256877728
image-1661256887348
可以单个设置修改编码方式set character_set_server=utf8;但是重启会失效,建议按以下方式修改编码方式。 (1)编辑配置文件。sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf (2)在[mysqld]下添加一行character_set_server=utf8。如下图
image-1661256909546
(3)重启MySQL服务。service mysql restart (4)登陆MySQL,并查看MySQL目前设置的编码show variables like “char%”;
image-1661256924936
这样就可以愉快的导入中文了 Ubuntu 下的mysql配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf

二、Host is not allowed to connect to this MySQL server错误的解决办法
错误描述

我先做了这些工作:服务器用的 Windows Server 2012。配置好服务器上的MySQL。防火墙允许mysqld.exe 。 然后在我自己的电脑上用 workbench 连接服务器上的 MySQL 发现无法连接。提示错误: Host ‘xxx.xxx.xxx.xxx’ is not allowed to connect to this MySQL server 。其中 ‘xxx.xxx.xxx.xxx’ 是我自己的电脑的IP。

解决方法

远程桌面连接到服务器。调用 mysql -u root -p 命令打开客户端,连接数据库。执行如下命令并得到返回结果:

mysql> use mysql

mysql> select t.host from user t where t.user='root';

+--------------+

| host |

+--------------+

| localhost |

+--------------+

这个返回结果说明现在 root 用户只允许在服务器的本地登录。 执行如下命令:

update user set host='%' where user='root';

然后重启 MySQL 服务就可以了。

三、Mysql服务出现error 1698(28000)错误解决方法
解决方法如下:

mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.10 MySQL Community Server (GPL)

查看一下user表,错误的起因就是在这里, root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password。

mysql> SELECT user,host,plugin FROM mysql.user;

±----------±----------±----------------------+

| user | host | plugin |

±----------±----------±----------------------+

| root | localhost | auth_socket |

| mysql.sys | localhost | mysql_native_password |

±----------±----------±----------------------+

2 rows in set (0.00 sec)

ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY’123qwe!@#';

四、修改root密码(mysql8.0,8.0以下命令会有差异)

> use mysql;
2  
3 > ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY'123qwe!@#';
4  
5 > flush privileges; #更新所有操作权限
6 > quit;

五.开启数据库慢日志
默认配置文件在/etc/my.cnf,在配置文件加上上述内容开启慢日志和定义存储路径。

[mysqld]
slow_query_log = 1
slow_query_log_file = /data/mysql/mysql-slow.log
long_query_time = 2
5

评论区