mysql 사용자가 존재하는지 확인하는 중
사용자가 존재하는지 확인하려면 어떻게 해야 합니까?
mysql 데이터베이스에 대한 설치 관리자를 하고 있는데 사용자를 만들지 않으면 사용자가 종료되는지, 사용자를 삭제하고 다시 생성하는지 확인해야 합니다.
이것은 제가 걱정 없이 대본을 실행할 수 있게 해줍니다.
감사해요.
MySQL은 다음과 같은 테이블에 사용자 데이터를 저장합니다.user
데이터베이스에mysql
(기본값).다음 쿼리가 반환됩니다.1
지정된 사용자 이름을 가진 사용자가 존재하는 경우,0
그렇지않으면.
SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username')
어쨌든 MySQL 사용자를 삭제하는 경우, 먼저 존재하는지 확인할 필요가 없습니다.MySQL은 삭제할 내용이 없으면 오류를 발생시키지 않습니다.
DELETE FROM mysql.user WHERE User = 'username';
MySQL의 최신 버전에서는 다음 옵션을 사용할 수 있습니다.
DROP USER IF EXISTS 'username'@'host';
삭제하지 않고 사용자가 존재하는지 확인해야 할 때(예: 어떤 경우에도 명령을 실행하는 대신 일부 명령을 건너뛸 때), 이를 사용할 수 있습니다(여기서).$USER
확인할 사용자):
if [ $(echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$USER'" | mysql | tail -n1) -gt 0 ]
then
echo "User exists"
else
echo "User doesn't exist"
fi
NB:
mysql
명령을 사용하려면 인증에 추가 아르그 및/또는 구성이 필요함)tail -n1
쿼리 결과 헤더를 제거하는 데 사용됩니다.
MySQL에 DROP USER가 부족합니다.
좋은 해결책은 사용자를 떨어뜨리기 전에 무해한 권한을 부여하는 것입니다.이렇게 하면 사용자가 존재하지 않을 경우 사용자가 생성되어 다음과 같이 안전하게 드롭할 수 있습니다.
GRANT USAGE ON *.* TO 'username'@'localhost';
DROP USER 'username'@'localhost';
FLUSH PRIVILEGES;
USE는 실제로 권한이 없음을 의미합니다.
출처 : http://bugs.mysql.com/bug.php?id=19166
이렇게 할 수 있었습니다.
#!/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
따라서.
MySQL 5.7은 이미 다음을 포함하고 있지만 이전 버전의 경우 Percona-toolkit에서 사용하고 피드백합니다.DROP USER
mysql에 대한 부분:
pt-show-grants --drop --only=$username | grep '^DROP USER' | mysql -v
사용자 이름과 호스트 이름 쌍이 여러 개인 경우 이를 모두 제거합니다.
언급URL : https://stackoverflow.com/questions/3049929/checking-if-mysql-user-exists
'programing' 카테고리의 다른 글
월을 이름에서 숫자로 바꾸다 (0) | 2023.10.15 |
---|---|
MySQL에 BLOB 및 CLOB 파일을 삽입하는 방법? (0) | 2023.10.15 |
Powershell Web Admin Commandlets로 IIS 사이트의 앱 풀을 변경하는 방법 (0) | 2023.10.10 |
절차에 대한 각 대안에 대한 MySQL (0) | 2023.10.10 |
AngularJsngIf로 인해 지시문 내부의 요소를 찾을 수 없습니다. (0) | 2023.10.10 |