31

我正在为一个java程序在mysql中创建一个数据库。我的程序在我的朋友系统中运行良好。但是我的mysql有一些问题。

查询如下:

mysql> create database sampledb;

Query OK, 1 row affected (0.00 sec)

mysql> use sampledb;

Database changed

mysql> create user zebronics identified by 'zebra123';

ERROR 1146 (42S02): Table 'mysql.user' doesn't exist

我无法为我的数据库创建任何用户。请帮忙??

4

8 回答 8

53

我的解决方案是运行

mysql_upgrade -u root

场景:我在我的 Mac 上使用“自制升级”更新了 MySQL 版本。之后,有些东西起作用了,但其他命令引发了问题中描述的错误。

于 2018-07-06T16:25:39.093 回答
14

看起来您的 MySQL 安装有些问题。该mysql.user表肯定存在。尝试在您的服务器上运行以下命令以在名为的数据库中创建表mysql

mysql_install_db

如果这不起作用,则可能是您的 MySQL 数据目录的权限被弄乱了。查看“已知良好”安装作为权限应该是什么的参考。

您也可以尝试完全重新安装 MySQL。

于 2013-07-22T05:46:06.843 回答
12

这里与 lxxxvi 描述的问题相同。跑步

    mysql_upgrade -u root

然后允许我成功输入密码

    mysql_secure_installation

正在等待。

于 2018-10-05T19:24:43.770 回答
9

您的数据库可能已损坏。尝试检查 mysql.user 是否存在:

use mysql;
select * from user;

如果缺少这些,您可以尝试使用重新创建表

mysql_install_db

或者您可能必须清理(完全删除它)并重新安装 MySQL。

于 2013-07-22T05:47:38.503 回答
3
 show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| datapass_schema    |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.05 sec)

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables
    -> ;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.00 sec)

mysql> create user m identified by 'm';
Query OK, 0 rows affected (0.02 sec)

检查数据库 mysql 和表用户,如上所示,如果该 dosent 工作,您的 mysql 安装不正确。

使用其他帖子中提到的以下命令再次安装表

mysql_install_db
于 2013-07-22T05:48:44.407 回答
2

您可以运行以下查询来检查用户表是否存在。

SELECT * FROM information_schema.TABLES
WHERE TABLE_NAME LIKE '%user%'

看看你是否可以找到具有以下值的行

mysql   user    BASE TABLE  MyISAM  

如果找不到此表,请查看以下链接以重建数据库How to recover/recreate mysql's default 'mysql' database

于 2013-07-22T05:47:15.743 回答
1

尝试运行mysqladmin reload,它位于/usr/loca/mysql/bin/mac 上。

于 2014-05-07T11:51:32.760 回答
1
'Error Code: 1046'. 

此错误表明该表不存在有时可能是由于选择了不同的数据库并运行引用另一个表的查询。结果显示“未选择数据库,通过在侧边栏中的 SCHEMAS 列表中双击其名称来选择要使用的默认数据库”。将解决这个问题,它对我很有用。

于 2018-04-29T19:09:17.823 回答