mysqld: Не вдається змінити каталог на дані. Сервер не запускається


79

Я встановив сервер MySQL за допомогою інсталятора, і він запустився. Після перезавантаження я спробував запустити його знову і отримати помилку:

D:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld -u root -p
mysqld: Can't change dir to 'D:\Program Files\MySQL\MySQL Server 5.7\data\'     (Errcode: 2 - No such file or directory)
2015-11-17T08:30:18.822962Z 0 [Warning] TIMESTAMP with implicit DEFAULT     value is deprecated. Please use --explicit_defaults_for_timestamp server option     (see documentation for more details).
2015-11-17T08:30:18.822962Z 0 [Warning] Insecure configuration for --secure-    file    -priv: Current value does not restrict location of generated files.     Consider setting it to a valid, non-empty path.
2015-11-17T08:30:18.822962Z 0 [Note] mysqld (mysqld 5.7.9) starting as     process 1108 ...
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [ERROR] failed to set datadir to D:\Program     Files\MySQL\MySQL Server 5.7\data\
2015-11-17T08:30:18.838586Z 0 [ERROR] Aborting


2015-11-17T08:30:18.838586Z 0 [Note] Binlog end
2015-11-17T08:30:18.838586Z 0 [Note] mysqld: Shutdown complete

Я намагався перевстановити MySQL.
ОНОВЛЕННЯ:
Коли я працюю mysqld -u root -pяк адміністратор, нічого не відбувається.


2
Переконайтесь, що папка існує, і користувач mysql має дозволи
georgecj11

Щойно зі мною трапилось те саме. Я вважаю, що проблема полягає в 1. нестандартному каталозі встановлення (не C: \ ..) та \ або 2. нестандартному каталозі даних та \ або 3. MySQL не встановлений як сервіс. Я вирішив це за допомогою відповіді nulliusinverba, хоча, здається, екземпляр (процес) все ще поводиться дивно.
Riva

Якщо ви встановлюєте в Windows, я настійно рекомендую використовувати .msiінсталятор. Набагато простіше, ніж ручна установка
Каньйон Колоба

@KolobCanyon На жаль, ви не можете використовувати інсталятор msi для оновлення між основними версіями
Ян

Відповіді:


78

Оскільки ви використовували інсталятор Windows, у вас все налаштовано на те, щоб запускати MySQL 5.7 як службу Windows, що є чудовим варіантом у більшості випадків.

Замість запуску mysqld.exeз командного рядка,

  1. Win + R
  2. Біжи services.msc
  3. Клацніть правою кнопкою миші MySQL57
  4. Запустіть послугу.

10
За винятком випадків, коли ви вказуєте під час встановлення (як я це зробив), що ви не хочете встановлювати сервер MySQL як службу. Тоді послуга взагалі не створена, і ви будете шукати її в Сервісах марно.
Riva

2
Якщо ви будете постійно працювати з MySQL, ви можете попросити його автоматично завантажувати з Windows. Дотримуйтесь інструкцій @AaronDanielson, клацніть правою кнопкою миші службу MySQL57, відкрийте «Властивості» та змініть «Тип ініціалізації» з «вручну» на «автоматичний».
Ренато Байро

Якщо ви працюєте в Windows як обмежений користувач, тоді ви клацніть символ запуску Windows, введіть services.msc, а потім клацніть правою кнопкою миші та запустіть як адміністратор ..
Robi Wan Kenobi

1
Перший запуск "корінь mysqld -u - ініціалізація-небезпека". Він створить папку даних з рутом як користувач без пароля та необхідного файлу. Потім запустіть "mysqld.exe --console".
Нізар

Таким чином, він не обробляє файл init, і пароль не скидається. Це починається, але я все ще не можу зайти.
RichMeister

82

Я зустрічав ту саму проблему. У моєму випадку у мене не було ..\dataдиректорії, C:\mysql\тому я просто виконав mysqld --initializeкоманду з c:\mysql\bin\каталогу, і я отримав каталог даних у c:\mysql\data. Згодом я міг використовувати mysqld.exe --consoleкоманду для тестування запуску сервера.


Для запису, повна процедура встановлення та налаштування "невстановлюваної" версії сервера MySQL детально описана в офіційних документах
mcont

1
Також не забудьте запустити cmdas Administrator(тобто клацніть правою кнопкою миші на cmd-> Запустити від імені адміністратора
JejeBelfort

1
це допомогло мені обійти проблему ([ПОМИЛКА] не вдалося встановити для datadir значення C: \ Program Files \ MySQL \ MySQL Server 5.7 \ data \) при спробі скинути root pw на
windows10

25

У моєму випадку я встановив каталог даних в інше місце. Отже, каталог даних насправді не знаходився за замовчуванням. Тому, коли я запускав mysqldкоманду з командного рядка, мені довелося вказати каталог даних вручну:

mysqld --datadir=D:/MySQLData/Data

Ось документація для аргументів командного рядка mysqld.


Дякую за цю відповідь. Це вирішило мою проблему. Mysql встановив каталог даних в каталог ProgramData, тоді як mysqld шукає його в програмних файлах. З вашою відповіддю я щойно вказав --datadir та bam, це спрацювало!
Michael Iyke,

Це спрацювало, коли я переніс портативний пристрій MariaDB в інше місце. Дякую за відповідь!
Бенджамін Вайс

11

Що я зробив (Windows 10) для нової інсталяції:

  1. Запустіть cmd в режимі адміністратора (запустіть як адміністратор, натиснувши клавішу windows, набравши cmd, клацнувши правою кнопкою миші та вибравши "Запустити від імені адміністратора"

  2. Перейдіть у каталог "MySQL Server XY" (для мене повний шлях - C: \ Program Files \ MySQL \ MySQL Server 5.7 ")

  3. за допомогою блокнота створіть my.ini із розділом mysqld, який вказує на ваш каталог даних

    [mysqld]
    datadir="X:\Your Directory Path and Name"
    
  4. створив каталог, визначений у my.ini вище.

  5. перейдіть у каталог bin в каталозі сервера та виконайте: mysqld --initialize

  6. Після завершення служби запустили послугу, і вона підійшла нормально.


Працює для мене, але коли я вперше намагаюся увійти в систему як адміністратор root, там пише Доступ заборонено. Я думав, що пароль пароля за замовчуванням не був паролем.
AjaxLeung

11

Перший запуск

mysqld -u root --initialize-insecure 

Він створить папку даних з рутом як користувач без пароля. Тоді біжи

mysqld.exe -u root --console

Я запустив вашу першу інструкцію, і вона створила мою папку "дані", а після подібно документації: dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/… : Я запустила цю інструкцію: C: \> mysqld - -defaults-file = "C: \\ ProgramData \\ MySQL \\ MySQL Server 5.7 \\ my.ini" --init-file = C: \\ mysql-init.txt
vljc2004

7
  1. Перевірте, чи існує директор.
  2. Якщо він існує, переконайтеся, що mysql має на нього права доступу (читання / запис). Може бути гарною ідеєю запустити MySQL як системний процес, але не обов’язково.

Якщо це все ще не працює, спробуйте мати наступні позначення з подвійними скісними рисками: C: \ WebSerer \ MySQL \ data або C: / WebServer / MySQL / data


3

У mysql 8.0.13 ініціалізація zip-пакету.

  1. Переконайтеся, що папка даних порожня.

  2. Під біком шляху mysql запустіть

    mysqld.exe --initialize-insecure

  3. Додайте до рідного mysql my.ini

    [mysqld]

    default_authentication_plugin=mysql_native_password


2

Коли я зіткнувся з цією ж помилкою, я помітив, що файл конфігурації MySQL у "C: \ Program Files \ MySQL \ MySQL Server XY \" змінено на my-default.ini

Я це вирішив

  1. Скопіюйте my.ini з "C: \ ProgramData \ MySQL \ MySQL Server XY \ my.ini"
  2. Вставте його в "C: \ Program Files \ MySQL \ MySQL Server XY \ my.ini"
  3. Перезапустіть сервер MySQL із services.msc

У файлі .ini їх частина є такою:

# On Windows you should keep this file in the installation directory 
# of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To
# make sure the server reads the config file use the startup option 
# "--defaults-file". 

1

Перевірте своє справжнє my.iniрозташування файлу та встановіть за --defaults-file="location"допомогою цієї команди

mysql --defaults-file="C:\MYSQL\my.ini" -u root -p

Це рішення постійно використовується для вашого cmd екрану.


1

видаліть усі файли з каталогу "{path-to-mysql} \ data" і запустіть:

mysqld --initialize-insecure --basedir={path-to-mysql}\mysql --datadir={path-to-mysql}\data --console

1

mariofertc повністю вирішив це для мене, ось його кроки:

  1. Переконайтеся, що каталог даних mysql порожній (проте перед тим, як його видалити, збережіть файл помилок для своїх записів).

  2. У шляху до біна mysql запустіть: mysqld.exe --initialize-unscure

  3. додати до my.ini (файл конфігурації mysql) наступне: [mysqld] default_authentication_plugin = mysql_native_password

Потім перевірте служби (через диспетчер завдань), щоб переконатися, що MySql працює, якщо ні - клацніть правою кнопкою миші MySql і запустіть його.

Також зауважу, якщо у вас немає вашого файлу конфігурації mysql у кошику mysql і ви не можете його знайти за допомогою пошуку у вікні, ви захочете знайти його в C: \ Program Data \ Mysql \ Зауважте, що він може мати інше ім'я, крім my.ini, наприклад шаблон, як тут згадує Heesu: Не вдається знайти my.ini (mysql 5.7) Просто знайдіть шаблон, який відповідає версії вашого mysql, за допомогою команди mysql --version


0

Якщо ви встановили MySQL Server за допомогою інсталятора Windows і як службу Window, то ви можете запустити MySQL Server за допомогою PowerShell і відчути зручність не залишати командний рядок.

Відкрийте PowerShell і запустіть таку команду:

Get-Service *sql*

Буде отримано та відображено список служб MySQL. Виберіть той, який ви хочете, і запустіть таку команду, замінюючи ім’я служби на справжнє ім’я служби:

Start-Service -Name service-name

Готово. Ви можете перевірити, чи працює служба, Get-Service *sql*повторно запустивши команду та перевіривши статус служби.


0

Це рішення використовує інсталятор Windows MySQL .

Я пробував усі інші способи, згадані тут та інші відповідні публікації, але це не вирішило мою проблему, служба просто не запустилася, але підхід нижче з mysql-installer зробив.

Якщо у вас все ще є програма встановлення або принаймні пам’ятайте версію, виконайте наступні кроки:

  1. Запустіть інсталятор Windows MySQL. Для мене це було "mysql-installer-community-8.0.20.0"
  2. Потім видаліть / видаліть SQL Server і видаліть усі конфігурації
  3. Видаліть папку SQL Server вручну з "C: \ Program Files \ MySQL \ MySQL Server 8.0."
  4. Знову запустіть інсталятор MySQL та встановіть SQL Server знову

Ви можете перевірити в службах вікна, що сервер MySqL запустився.

Сподіваюся, це комусь допомагає.


0

Перевірте відсутність папок, які потрібні серверу, у моєму випадку це була папка UPLOADS в programData, яку видалила програма для очищення порожніх папок, якою я користувався раніше.

Як я дізнався:

запустити файл конфігурації сервера my.ini (у моєму випадку це було в programData) як параметр файлу за замовчуванням для mysqld (не забудьте скористатися опцією --console для перегляду журналу помилок на екрані) 'mysqld --defaults-file = "C: \ ProgramData \ MySQL \ MySQL Server 8.0 \ my.ini" --console '

Помилка:

mysqld: Не вдається прочитати директорію 'C: \ ProgramData \ MySQL \ MySQL Server 8.0 \ Uploads \' (ОС errno 2 - немає такого файлу або каталогу)

Рішення:

Щойно я створив папку Uploads вручну, сервер успішно запустився.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.