卸载Mysql
首先,更新系统
sudo apt-get update
然后,修复安装错误,会提示输入mysql用户名密码
sudo apt-get --fix-broken install
然后,检索mysql安装包,并删除检索出的依赖包
sudo apt-get --purge autoremove
然后是删除/var/lib/mysql,最后重装mysql。
Delete /var/lib/mysql
安装Mysql
首先,更新系统
sudo apt-get update
然后,重新安装mysql
sudo apt-get install mysql-server
如果需要客户端的话,也可以继续输入下面命令sudo apt-get install mysql-client
我是用作开发使用,只要服务端就可以了。使用类似Navicat的工具连上去就可以了。各位小伙伴可以根据自己需要来进行安装。
顺便说明下,这种安装方法,不能指定版本,我的ubuntu是20.04的,系统自动给我安装的是符合操作系统版本的mysql 8,如果想要指定mysql版本的,还是去找压缩包安装方法吧。
安装后的目录如下:
/usr/bin 客户端程序和mysql_install_db
/var/lib/mysql 数据库和日志文件
/var/run/mysqld 服务器
/etc/mysql 配置文件my.cnf
/usr/share/mysql 字符集,基准程序和错误消息
/etc/init.d/mysql 启动mysql服务器
/var/cache/apt/archives 安装包源码文件,那7个文件就在这里
修改用户名和密码
#查看默认用户和密码
cat /etc/mysql/debian.cnf
用户名默认问debian-sys-maint
,密码是随机的,比如为:ARBVawShBewQXrzK
,执行如下指令登陆mysql:
#格式
mysql -u用户名 -p密码
#如:
mysql -udebian-sys-maint -pURBVawZhBewQXrzD
#切换数据库
use mysql;
#登陆成功后执行如下指令修改密码为123456
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
设置远程登陆访问授权
进行授权,授权后,其他机器可以通过ip访问本机器上的数据库
#执行如下指令运行远程登陆授权,密码也是123456
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
alter user 'root'@'%' identified with mysql_native_password by '123456';
flush privileges;
这里有个坑,要注意的是,可能会出现如下报错。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'indentified by 123456' with grant option' at line 1
原因: mysql的版本问题,这条语句适用于MySQL8.0之前
解决: mysql8.0及以上版本需要使用以下语句:
create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%';
为了防止远程连接有问题,需要将配置文件中默认的bind-address值(127.0.0.1),修改为0.0.0.0,具体修改指令如下:
#编辑配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
#找到bind-address修改,然后保存退出
bind-address = 0.0.0.0
重启mysql
#重启指令
service mysql restart
重启好后,可以通过navicat直接远程访问了。
踩坑记录
解压安装时,报错package architecture (amd64) does not match system (arm64)
原因是rchitecture的问题,我的cpu架构是arm64的但是我找到的tar包是amd64的,所以无法使用。
可以通过下满的指令查找自己机器的CPU架构
sudo dpkg --print-architecture
另外附上Mysql各版本的tar包官方下载网站ORACLE