数据库

  • Ubuntu 20.04安装MySQL 8.0.20记

    ·

    很久没手工装过MySQL了,诸如AppNode这样的服务器面板很好的帮助开发人员屏蔽了琐碎的底层环境配置问题。不过AppNode支持的系统版本都很老了,其他面板又用不惯,于是打算手工安装一次环境尝鲜下新版本。 不夸张的说,我为了装一个MySQL昨天晚上从12点折腾到凌晨3点,今天早上11点起来又折腾到13点……于是今天打算把遇到的坑总结一下,免得后人再踩进来。 坑一 Ubuntu 20.04下安装mysql-server的过程中是不会要求输入root密码的,root密码被设置成了什么至今我也没弄明白。 看到网上教程以及官方文档都说安装过程中会生成一个默认密码,并被保存在错误日志里,然而我仔细翻过,发现并没有。 于是乎打算强制修改root密码,由此引出了坑二…… 正确的查看管理密码的方式是: 上述文件的内容是: 可以看到user字段就是管理员用户名,password当然就是默认密码了。这个debian-sys-maint账号是Debian系Linux下MySQL的默认管理账号。 直接使用这个账号登录MySQL就可以愉快的玩耍了,如果你和我一样不幸的按照网上的坑比文章强制重设了root密码,请看“坑二”。 坑二 当时为了重置root密码,在网上搜了很多文章,大部分都是教要在/etc/mysql/my.cnf中添加skip-grant-tables;选项来跳过密码登录。 如果你这么做了,恭喜你,你完蛋了。 根据一篇台湾同胞写的文章来看,这个选项会修改mysql的用户表,造成不可预知的问题。 其具体表现的症状就是你在修改完root密码并登陆后,执行show databases;命令会弹出如下报错: 这个报错着实让我头疼了一阵,谷歌搜、百度搜、官网搜,得出的结论无非就是执行mysql_upgrade -u root -p命令,尝试升级/var/lib/mysql下的数据库文件。 可是,这个命令在MySQL 8.0.16中已经被废弃了……执行后会出现如下提示: 当然,更可笑的是,我压根没执行过数据库服务器的升级,为何要去升级数据库文件…… 要解决这个问题,就得把整个MySQL完全卸载,并删除/var/lib/mysql目录,重新安装后再通过“坑一“中介绍的方式来查看管理员账号。 如果你必须要用root用户,可以使用这个命令重置其密码:sudo mysql_secure_installation

    Read More

  • MySQL基本命令介绍

    ·

    关于本篇文章: 本文中只包含最常用的MySQL命令,也是应该全部掌握的MySQL命令,我将以一个简单的案例来对这些命令做简要说明。 MySQL介绍: MySQL是优秀的开源关系型数据库,最初由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品。 基本数据库管理命令介绍: 注:以下内容中的“mysql>”为MySQL客户端的命令提示符标志。另外,MySQL命令建议使用大写字母来书写,因为我个人习惯的问题,本篇文章中采用小写。 创建一个名为db_name的数据库。 mysql>create database db_name; 查看当前已存在的数据库。 mysql>show databases; MySQL返回信息: 创建一个新用户,user_name,密码为ibadboy.net。 mysql>create user user_name@localhost identified by “ibadboy.net”; 设置用户权限,使其对db_name数据库拥有全部权限。 mysql>grant all privileges on db_name.* to user_name@localhost identified by “ibadboy.net”; 查看刚刚添加的用户。 mysql>select host,user from mysql.user; 查看user_name用户所拥有的权限。 mysql>show grants for user_name@localhost; 使用新添加的user_name用户重新登录数据库 。 [root@localhost ~]# mysql -u user_name -p 选择db_name数据库,其后的建表查表以及插入数据等操作都会在此数据库下进行。 mysql>use db_name;…

    Read More