摘要
windows和虚拟机上只能同时开启一个mysql服务,这个服务用于运行mysql-server。如果在win下安装过mysql,然后虚拟机下再次安装mysql,用mysql -u root -p登录本地数据库时时就会报错,但是可以用远程连接的方式登录。划重点!!!
登录前须开启mysql服务,win下在管理工具中开启关闭,linux下用service mysql start/stop
Ubuntu下安装mysql8.0
1.首先进入官网,点击download,下载一个·deb格式文件。

2.unbuutu执行如下命令:sudo dpkg -i mysql-apt-config_0.8.17-1_all.deb
3.方向键选mysql-8.0 并按enter键
4.再次方向键选择mysql-8.0 并按enter键
5.方向键选择ok 并按enter键
6.更新apt: sudo apt update
7.解决提示部分:sudo apt-get upgrade
8.正式安装MySQL18.04:sudo apt install mysql-server
9.上边安装完后,会让你设置root密码,输入后按enter键,并再次确认
10.MySQL8.0采用了新的加密方式,与Ubuntu18.04有兼容问题,故选择下面的旧版本5.x的加密方式
11.以上内容引用青蛙组长,登录mysql -u root -p,会报错
2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
解决方案
注:如果只是用linux远程登录win的数据库,以下步骤直接跳过,
13.更换搜索关键词之后,找到这位大佬的方法
14.下载mysql.server.sh启动脚本,地址,可直接复制地址,用迅雷下载,或者linux使用wget下载。
15.修改mysql.server.sh文件
# If you change base dir, you must also change datadir. These may get
# overwritten by settings in the MySQL configuration files.
basedir=/usr
datadir=/var/lib/mysql
# Default value, in seconds, afterwhich the script should timeout waiting
# for server start.
# Value here is overriden by value in my.cnf.
# 0 means don't wait at all
# Negative numbers mean to wait indefinitely
service_startup_timeout=900
# Lock directory for RedHat / SuSE.
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mysql"
# The following variables are only set for letting mysql.server find things.
# Set some defaults
mysqld_pid_file_path=/var/run/mysqld/mysqld.pid
if test -z "$basedir"
16.复制到/etc/init.d/目录下,mv mysql.server.sh /etc/init.d/mysql
17.修改文件权限,chmod +x /etc/init.d/mysql
18.启动MySQL,sudo service mysql start,此时报错
The server quit without updating PID file (/var/run/mysqld/mysqld.pid)
解决方法
19.如果该目录不存在则创建目录,mkdir /var/run/mysqld
20.创建文件touch mysqld.pid
21.修改文件权限,chmod -R 777 /var/run/mysqld
22.重启服务: sudo service mysql start
总结
之前在windows下安装过mysql8.0,安装在C盘,然后又在ubuntu下安装mysql,貌似两个数据库会覆盖,所以linux下无法直接登录,很奇怪,我的linux是用WSL安装的,路径在D盘,怎么会冲突呢。
另外,WSL2.0和mysql8.0,两个都是最新版,跟以前的版本有区别。比如mysql执行如下命令会报错,因为8.0版本没有password这个字段,替换成authentication_string了。
use mysql;
select host, user, password, plugin from user;
此时虚拟机和windows共用一个数据库,因此使用远程访问会报错,大概就是can not connect之类的。
上接第11步
如果你只是想用linux远程访问win的数据库(确保win下的mysql已开启远程访问),那么以上的13-22步直接忽略,使用命令mysql -u root -p -h 主机的IP,-u表示用户,-p表示输入密码,-h表示数据库的IP地址。
如果你想用使用linux的mysql,首先要关闭win的mysql服务,然后按照以上的13-22步去配置就ok了。
回到之前的问题,我在Linux安装数据库之后,关闭win的mysql服务,然后打开win的mysql客户端,此时数据库路径会定位到linux的数据库路径,就是因为linux的mysql-server一直在监听3306端口,win的mysql客户端登陆时访问3306端口,这个访问动作被linux的mysql-server监听到,然后win的mysql就访问到了linux的数据库。(我猜的)
本文介绍了在Ubuntu上安装MySQL8.0的详细步骤,包括下载、配置和解决启动错误。当Windows与Ubuntu虚拟机都安装MySQL时,会出现登录冲突。解决方法是关闭Win的MySQL服务,或通过远程连接访问。同时,针对启动报错,创建所需目录和文件,调整权限,最后成功启动MySQL服务。


被折叠的 条评论
为什么被折叠?



