:::info 💡 通过本地Navicat来连接位于ubantu(VMware里的虚拟机)里的mysql。 :::
汇报人:puppet洛洛
日期:2022年5月10日01:09:00
1.测试虚拟机ubantu是否成功创建mysql表
1,在model.py文件中创建一个Person表,通过python manage.py makemagrations和 python manage.py migrate 命令建立表;
2,再在linux里连接到mysql
mysql -u debian-sys-maint -p 再输入密码即可登录进mysql。
3,通过 showdatabases 等命令即可查看是否成功创建Person表;
2.Navicat连接linux里的mysql
连接mysql一般需要IP、port、表名、用户和密码;前面已经知道这几样了,直接粘贴进去即可。
1,ubantu的IP需要用 ifconfig 进行查询。虚拟机的IP需要在Navicat所在的机器ping通。
2,mysql端口一般是3306,我们需要查看此端口是否开放,没开放则需要开放。
以下命令 netstat -an | grep 3306 即可查询,以下即为为开放状态。
下面是具体开放的步骤:
先进到mysql配置文件里修改已绑定的地址;再通过
3, cd /etc/mysql/mysql.conf.d/ 到该文件并找到mysqld.cnf文件,sudo vim mysqld.cnf 打开mysql配置文件,可看到只绑定了本机IP,而我们需要远程连接mysql,因此需要注释掉这句话,以达到可以供其他机器访问的目的(当然,也可以改成”0.0.0.0“)。如图:
4,开放端口后需要创建一个mysql用户给Navicat使用(一般是不给上一节中的默认账密的),这里需要注意赋权问题。
创建密码rentalpwd为rental用户:
create user ‘rental’@’%’ identified by ‘rentalpwd’;
赋权给该用户(8.0之前的版本试试这个命令):
GRANT ALL PRIVILEGES ON . TO rentalroot
@’%’ IDENTIFIED BY rentalrootpwd
;
赋权给该用户(8.0之后的版本试试这个命令):
grant all privileges on rentalsite.* TO ‘rental’@’%’ ;
刷新权限:
flush privileges;
5,最后看效果:
注意:
1,这里经常会因为mysql版本问题产生赋权语法不同,具体要看自己的mysql版本是什么,一般报错时候会告诉你是赋权问题(报错如下):
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 ‘’*’ to ‘rental’@’%’’ at line 1
2,一定要在ubantu里连接mysql并进入后(show databases; 能运行即可)再执行上述步骤,而不是直接在linux敲这些命令。
3,常见报错
3.1,密码等级
我们在创建mysql用户时候经常会碰到如下提示,这是由于密码密级设置的较高,我们的密码密级达不到,所以可以把密码设置复杂点或者把等级改低点,下面介绍改低等级的方法。
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
1,显示密码等级
SHOW VARIABLES LIKE ‘validate_password%’;
2,设置密码等级为低
set global validate_password.policy=LOW;
3.2,Navicat无法展示出已配置好的数据库
有时候发现能连接上Navicat,但就是看不到自己创建的那个库(下图红框那个),原因很有可能是没有给这个mysql用户赋权限,具体做法如下:
1,查询mysql用户权限
show grants for mysql用户;
2,为账户赋权
grant all privileges on rentalsite.* TO ‘rental’@’%’ ;
3,刷新权限:
flush privileges;