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
设置MySQL开机自启
sudo systemctl status mysql
- 确认是否启动成功:
sudo netstat -tap | grep mysql
- 进入mysql shell界面: mysql -u root -p
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
接着还有一处地方要进行修改:
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,如下图。
可以单个设置修改编码方式set character_set_server=utf8;但是重启会失效,建议按以下方式修改编码方式。 (1)编辑配置文件。sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf (2)在[mysqld]下添加一行character_set_server=utf8。如下图
(3)重启MySQL服务。service mysql restart (4)登陆MySQL,并查看MySQL目前设置的编码show variables like “char%”;
这样就可以愉快的导入中文了 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
评论区