8

我打算将mysql安装到linux服务器。但是我没有对该服务器的root访问权限。所以我创建了两个文件夹,分别是 mysql 和 mysqldata。mysql 文件夹包含二进制文件。mysqldata 文件夹保存数据和日志。

我的.cnf

[mysqld]
user                    = mysql
port                    = 3306
bind-address            = localhost
basedir                 = /home/nwn/mysql/mysql-8.0
socket                  = /home/nwn/mysqldata/instA/socket/mysql.sock
datadir                 = /home/nwn/mysqldata/instA/data
tmpdir                  = /home/nwn/mysqldata/instA/tmp
secure_file_priv        = /home/nwn/mysqldata/instA/mysql-files
max_connections         = 150

# Logging
log-bin                 = /home/nwn/mysqldata/instA/logs/instA-binlog
log-error               = /home/nwn/mysqldata/instA/logs/instA-errorlog.err
slow_query_log          = 1
slow_query_log_file     = /home/nwn/mysqldata/instA/logs/instA-slowquery.log
long_query_time         = 0.5

# InnoDB
innodb_data_home_dir    = /home/nwn/mysqldata/instA/innodb/data
innodb_data_file_path   = ibdata1:50M;ibdata2:12M:autoextend:max:500M
innodb_log_group_home_dir = /home/nwn/mysqldata/instA/innodb/log
innodb_buffer_pool_size = 32M

# MyISAM
key_buffer_size         = 16M

server_id                = 1

我做了所有其他配置。当我运行以下命令时

mysql-8.0]$ bin/mysqld --defaults-file=~/mysqldata/instA/my.cnf --initialize-insercure

我在 error_log 中有以下日志

 cat ~/mysqldata/instA/logs/instA-errorlog.err
2018-10-09T10:39:51.127424Z 0 [Warning] [MY-010139] [Server] Changed limits: max_open_files: 1024 (requested 8160)
2018-10-09T10:39:51.127523Z 0 [Warning] [MY-010142] [Server] Changed limits: table_open_cache: 432 (requested 4000)
2018-10-09T10:39:51.383986Z 0 [Warning] [MY-010101] [Server] Insecure configuration for --secure-file-priv: Location is accessible to all OS users. Consider choosing a different directory.
2018-10-09T10:39:51.384043Z 0 [System] [MY-010116] [Server] /home/nwn/mysql/mysql-8.0/bin/mysqld (mysqld 8.0.12) starting as process 32654
2018-10-09T10:39:51.386625Z 0 [Warning] [MY-010122] [Server] One can only use the --user switch if running as root
2018-10-09T10:39:51.394675Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
2018-10-09T10:39:51.394817Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2018-10-09T10:39:51.394831Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-10-09T10:39:51.395363Z 0 [System] [MY-010910] [Server] /home/nwn/mysql/mysql-8.0/bin/mysqld: Shutdown complete (mysqld 8.0.12)  MySQL Community Server - GPL.
4

4 回答 4

22

尽管帖子很旧,但发布我的解决方案,因为我花了大约 2 个小时才弄清楚,这可以帮助别人节省时间。

您可以尝试这样做:

shell> mysqld --initialize

这将初始化您安装 MySql 服务器的路径中的数据目录。一般放在C:\Program Files\MySQL\MySQL Server 8.0。

希望它可以帮助某人。

于 2020-05-25T13:45:31.057 回答
11

请按照以下步骤在 Windows 上重置您的 MySQL 密码:

  1. 停止 MySQL 服务@services.msc

  2. 使用以下内容创建文件 change_mysql_pwd.txt(将 YourNewPassword 替换为您希望 root 用户拥有的所需新密码:

     ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
    
  3. 将文件保存在 C:\change_mysql_pwd.txt 下

  4. 以管理员身份运行 CMD.exe(开始->Cmd->右键单击->以管理员身份运行)

  5. 输入 cmd: cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"

  6. 在“C:\Program Files\MySQL\MySQL Server 8.0\”下创建“Data”文件夹(如果已经存在,请删除其内容!)

  7. 输入cmd:mysqld --install

  8. 输入cmd:mysqld --initialize

  9. 输入cmd:mysqld --init-file=C:\\change_mysql_pwd.txt

  10. 使用 root 用户帐户和上面设置的密码登录。

  11. 删除 C:\change_mysql_pwd.txt 文件

享受...

于 2020-12-09T10:21:43.880 回答
4

(上下文:新设置,Windows Server 2016 上的 mysql 8)真正帮助我摆脱“无法找到有效数据目录”的是:

mysqld --initialize --console

--console 部分会立即在命令行上告诉您出了什么问题以及该做什么。因为我进行了全新安装,所以我缺少“数据”目录。但是,如果您的 my.ini 中的设置在新安装的版本中不受支持,那么仍然会使用上面列出的命令生成一个“数据”目录。如果 my.ini 中有多个错误设置,则需要先删除新创建的“数据”目录。注意:首先检查数据目录中是否有数据库,否则您将丢失所有数据库!所以只在全新安装时使用它。

在步骤:

  1. 以管理员身份从 cmd 运行 mysqld --initialize --console
  2. 修复 my.ini 错误行,删除数据目录(仅当您有新安装时:否则您将丢失所有数据库!)
  3. 重新运行 mysqld --initialize --console
  4. 重复直到所有错误都被修复。

现在 MySql 应该启动了。

于 2021-05-19T20:31:43.903 回答
1

据我从您的控制台输出中了解到,您尝试在数据目录中存在文件时初始化数据库。首先,您应该删除 MySQL 数据目录中的所有文件(请注意,您可能会丢失数据),然后您应该运行以下命令

shell> mysqld --initialize --console

正如@Alex Karshin、@Lazycoder_0071 和@Freeze_H 所述。如果没有其他问题,MySQL 应该无缝地初始化数据库。

于 2021-09-03T15:00:32.590 回答