Подтвердить что ты не робот

Проверка наличия пользователя mysql

Как проверить, существует ли пользователь?

Я делаю установщик для базы данных mysql, и мне нужно проверить, выходит ли пользователь, если не создать пользователя, если да удалите пользователя и создайте его снова.

поэтому я могу выполнить script без проблем.

спасибо.

4b9b3361

Ответ 1

Если вы все равно удаляете пользователя MySQL, тогда нет необходимости проверять, существует ли он в первую очередь. MySQL не будет бросать никаких ошибок, если ничего не удалять:

DELETE FROM mysql.user WHERE User = 'username';

Ответ 2

MySQL хранит пользовательские данные в таблице с именем user в базе данных с именем mysql (по умолчанию). Следующий запрос вернет 1, если пользователь с указанным именем пользователя существует, 0 в противном случае.

SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username')

Ответ 3

MySQL не имеет конструкции DROP USER IF EXISTS.

Хорошим обходным решением является предоставление пользователю безобидной привилегии перед ее отбрасыванием. Эта создаст пользователя, если он не существует, чтобы его можно было безопасно удалить, например:

GRANT USAGE ON *.* TO 'username'@'localhost';
DROP USER 'username'@'localhost';
FLUSH PRIVILEGES;

ИСПОЛЬЗОВАНИЕ фактически означает отсутствие привилегий.

Источник: http://bugs.mysql.com/bug.php?id=19166

Ответ 4

Вот как я смог это сделать:

#!/usr/bin/env bash

set -o errexit
set -o nounset

# Create credentials file
echo -e "[client]\nuser=root\npassword=${MYSQL_ROOT_PASSWORD}" > ~/.my.cnf

# Create standard user and grant permissions
if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = 'myuser';" | mysql | grep 1 &> /dev/null; then
    echo "Creating database user ..."
    echo "CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
          GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
          FLUSH PRIVILEGES;" | mysql
else
    echo "Database user already created. Continue ..."
fi

Измените myuser, mydatabase и mypassword соответственно.

Ответ 5

В зависимости от того, находится ли исходный script в PHP или нет, вы можете использовать PHP для определения и принятия действий на основе всей предоставленной информации.