Вероятно, там есть установка пароля root, обычно вы должны запустить mysql_secure_installation
от имени root, который запросит у вас пароль mysql root и там просто нажмите enter.
В вашем случае похоже, что установлен пароль root, вы можете изменить его, используя
sudo mysqld_safe --user=mysql --pid-file=/var/run/mysql/mysqld.pid --socket=/var/run/mysql/mysql. sock --datadir=/var/lib/mysql --skip-grant-tables
Это позволит вам запустить mysql и вы сможете mysql -u root
войти в mysql, после чего нужно будет обновить пароль root.
mysql> use mysql;
mysql> update user set password=PASSWORD("yournewrootpasshere") where User='root';
mysql> flush privileges;
mysql> quit
--skip-grant-tables
опция является ключевой, при использовании которой не будет запрашиваться пароль.
После этого, если вы перезапустите mysql, он нормально запустится, и вы даже сможете запустить mysql_secure_installation
снова с новым паролем root, если захотите.
Поскольку это свежая установка, вы также можете удалить пакет mysql и установить его заново. Не забудьте также удалить базу данных.
Этот ответ основан на нескольких сообщениях в чате, которые я опубликовал, и которые теперь служат расширенным резюме.
$PATH
Под «непосредственно доступной в командной строке» я предполагаю, что вы имеете в виду, что вы можете запустить ее как name
, вместо того, чтобы вводить что-то вроде /path/to/name
, например /home/galahad/bin/name
или ./name
.
Вашапеременная окружения $PATH
содержит список имен каталогов, разделенных :
. Когда вы запускаете в своей оболочке команду, содержащую символ /
, она интерпретируется как точное местоположение и имя запускаемого исполняемого файла. Но когда вы запускаете команду, которая несодержит /
, ваша оболочка ищет в каталогах в $PATH
исполняемые файлы с этим именем и запускает первый из них. он находит. (Он также может помнить, где находятся исполняемые файлы, которые вы запускали ранее. Так что на практике ему не нужно искать их каждый раз.)
Вот почему ./name
является распространенным способом для запуска исполняемого файла с именем name
, расположенного в текущем каталоге. Запуск name
вместо этого будет искать каталоги в $PATH
.
Если вы запустите echo "$PATH"
, вы увидите что-то вроде этого, хотя это может быть и не совсем так:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Каталоги в $PATH
не имеют называться bin
, но это обычное дело.
Если у вас есть исходный код, скомпилированный запуском ./configure
и make
, для его установки обычно используется make install
(или sudo make install
). Это копирует файлы из каталога сборки в место установки. Когда вещь, которую вы устанавливаете, предоставляет исполняемые команды, эти исполняемые файлы обычно копируются в каталог, который находится в $PATH
или который вы должны добавить в $PATH
.
Хотя для создания и установки программного обеспечения часто достаточно просто запустить ./configure
, make
, иногда make check
или make test
. , а затем make install
или sudo make install
, иногда вам может потребоваться передать параметры сценарию configure
для настройки сборки. В частности, , как говорит pfnuesel , именно так вы настраиваете , где будет установлено программное обеспечение. Несмотря на то, что шаг make install
фактически устанавливает программное обеспечение, места, где все будет установлено, обычно определяются на шаге ./configure
.
Наиболее распространенный вариант для этого — --prefix
. Префикс по умолчанию, когда вы не указываете configure
, что использовать, обычно /usr/local
. (Иногда исходный код программы или библиотеки по умолчанию использует какой-либо другой префикс. К счастью, это бывает редко.)
Итак, ./configure
обычно эквивалентно ./configure --prefix=/usr. /локальный
. Чтобы установить программное обеспечение в свой домашний каталог, вы можете использовать ./configure --prefix=/home/galahad
(если /home/galahad
является вашим домашним каталогом) или --prefix="$HOME"
. Тогда, конечно, вы все равно должны собрать и установить программное обеспечение с помощью make
. Я должен сказать, что не все программы, которые распространяются в виде исходного кода, построены таким образом. Вы всегда должны искать документацию внутри извлеченного архива исходного кода.
--prefix
Когда вы запускаете ./configure --prefix= каталог
, вы указываете, что программное обеспечение должно быть установлено вкаталог
каталог. Но это редко, если вообще когда-либо, помещает свободные файлы в каталог. Вместо этого он помещает файлы, которые служат для разных целей, в разные подкаталоги каталога
. Если эти подкаталоги не существуют, он их создает.
Исполняемые файлы обычно находятся в каталоге /bin
, хотя они могут находиться в каталоге /sbin
, если они обычно используются для системного администрирования, или они могут находиться в (реже в наши дни) в каталоге /games
, если это игры. Библиотеки находятся в каталоге /lib
или в другом каталоге с аналогичным названием, напримеркаталог/lib32
. Файлы заголовков находятся в каталоге/include
. Страницы руководства находятся в каталоге/man
. Файлы данных, используемые программным обеспечением, находятся в каталоге/share
.
Вот что означает, чтокаталог
является префиксом .Это родительский каталог, содержащий места, в которые будут установлены различные файлы.Таким образом, он отображается как префиксв абсолютных путяхбольшинства файлов и каталогов, созданных при запуске make install
или sudo make install
.
Есть несколько исключений. Общесистемные файлы конфигурации, которые иногда создаются при установке программного обеспечения, которое будет их использовать, хотя и не всегда, обычно находятся в /etc
. Обычно на это не влияет указание другого префикса. Даже если вы устанавливаете много программного обеспечения в /usr/local
, оно все равно в основном будет использовать /etc
, и ваш каталог /usr/local/etc
будет вероятно, не существует, пуст или содержит очень мало файлов.
Во многих системах вы можете найти дополнительную информацию о типовой структуре файловой системы, запустив man hier
. Если вы используете систему GNU/Linux, вас может заинтересовать Стандарт иерархии файловой системы.
Большинство программ, являющихся частью вашей системы, включая программы, устанавливаемые менеджерами пакетов в подавляющем большинстве операционных систем GNU/Linux (GoboLinuxявляется одним из исключений) и некоторые другие Unix-подобные системы устанавливаются с префиксом /usr
. Вы редко должны передавать этот префикс в ./configure
, потому что обычно вы хотите избежать конфликтов с системным программным обеспечением.
/usr
разрешено находиться в сетевой папке или разделе, который еще не смонтирован в самом начале процесса загрузки.Программное обеспечение, которое должно быть доступно в это время, обычно устанавливается в /
. Вот почему оба /usr/bin
и /bin
существуют и почему sh
обычно /bin/sh
.
Большинство менеджеров пакетов поддерживают установку двоичных файлов (хотя есть и исключения). Обычно, когда вы устанавливаете программное обеспечение в системе GNU/Linux с помощью менеджера пакетов, вы устанавливаете бинарные пакеты. В этом случае менеджер пакетов сам ничего не компилирует. Однако установка по-прежнему включает в себя копирование или извлечение файлов в места в файловой системе.
Вот что я имею в виду, когда говорю, что ваш менеджер пакетов устанавливает большинство вещей с префиксом /usr
. Я не имею в виду, что он обязательно запускает ./configure --prefix=/usr
или любую команду ./configure
.
В разных операционных системах используются разные менеджеры пакетов. Если вы используете такой дистрибутив, как Debian или Ubuntu, предназначенный для использования таких утилит, как dpkg
, apt-get
и aptitude
, вы следует необычнопытаться установить программное обеспечение с rpm
, yum
и dnf
.
Но основной принцип одинаков для всех менеджеров пакетов. Когда менеджер пакетов устанавливает команду, она обычно помещается в каталог, который, как ожидается, должен находиться в переменных среды пользователя $PATH
.В системах GNU/Linux менеджер пакетов обычно управляет всейсистемой — за исключением того, что вы устанавливаете сами другими способами — и, таким образом, устанавливает большую часть программного обеспечения с префиксом /usr
, тем самым помещая большинство исполняемых команд в /usr/bin
. (Конечно, подобно запуску make install
или sudo make install
, менеджеры пакетов обычно также устанавливают другие файлы в другие места.)
Если программа, которую вы хотите установить, соответствует рекомендациям, вы можете установить ее с помощью
./configure
make
make install
./configure
проверяет, соответствует ли ваша система всем требованиям, и настраивает параметры установки. make
все компилирует, а make install
копирует все нужные файлы в нужные места. Вы не хотите делать последний шаг вручную, потому что будет довольно утомительно размещать все библиотеки, справочные страницы и прочее в нужном месте.
Вы также можете указать, где должны быть установлены пакеты. Например, если вы хотите установить пакет в свой домашний каталог (, потому что, например. у вас нет прав администратора ), вы можете использовать
./configure --prefix="$HOME"/somefolder
make install
затем установит его в эту папку. Однако обычно вам это не понадобится.