使用非root用户登录时创建数据库会提示Error1044,使用root用户登录则能创建数据库。百度了一下似乎是权限问题,我该如何操作将我所登录的用户能创建数据库?
Mysql版本: 5.7.10 MySQL Community Server
使用系统是: Mac OS X
可用Terminal和Workbench
情况如下:
mysql> create database test1;
ERROR 1044 (42000): Access denied for user 'yisa'@'localhost' to database 'test1'
사용자에게 데이터베이스 객체에 대한 권한을 부여합니다
로1. 일반 데이터 사용자에게 데이터베이스의 모든 테이블 데이터를 쿼리, 삽입, 업데이트, 삭제할 수 있는 권한을 부여합니다.
testdb.*에 대한 선택을 common_user@'%'에게 부여
testdb.*에 대한 삽입을 common_user@'%'에게 부여
testdb.*에 대한 업데이트를 common_user@'%'에게 부여
삭제 부여 testdb.*에서 common_user@'%'
또는
선택, 삽입, 업데이트, 삭제 권한을 부여합니다. testdb.*에서 common_user@'%'
cc
python.*에서 '123456'으로 식별된 user@'%'에게 선택, 삽입, 업데이트, 삭제 권한을 부여합니다.
계정 루트 및 비밀번호 123456을 가진 사용자가 모든 IP 세그먼트 및 모든 라이브러리에서 모든 권한을 실행하도록 허용합니다.
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' 부여 옵션 포함;
2. 데이터베이스 개발자에게 권한을 부여하고 테이블, 인덱스, 뷰, 저장 프로시저 및 함수를 만듭니다. . . 및 기타 권한.
MySQL 데이터 테이블 구조를 생성, 수정, 삭제할 수 있는 권한을 부여합니다.
testdb.*에 대한 생성을 개발자@'192.168.0.%'에게 부여;
testdb.*에 대한 변경을 개발자@'192.168.0.%'에게 부여;
testdb.*에 대한 드롭 부여 개발자@'192.168.0.%';
MySQL 외래키 조작 권한을 부여하세요.
testdb.*에 대한 참조를 개발자@'192.168.0.%'에게 부여하고
MySQL 임시 테이블을 작동할 수 있는 권한을 부여합니다.
testdb.*에서 개발자@'192.168.0.%'에게 임시 테이블 생성 권한을 부여합니다.
MySQL 인덱스 운영 권한을 부여합니다.
testdb.*에 대한 인덱스를 개발자@'192.168.0.%'에게 부여합니다.
MySQL 뷰 조작 및 소스 코드 보기 권한을 부여합니다.
testdb.*에 대한 생성 보기를 개발자@'192.168.0.%'에게 부여;
testdb.*에 대한 표시 보기를 개발자@'192.168.0.%'에게 부여;
작업 MySQL 저장 프로시저 부여 , 기능 권한.
developer@'192.168.0.%'에게 testdb.*에 대한 생성 루틴을 부여합니다. — 이제 프로시저 상태를 표시할 수 있습니다.
developer@'192.168.0.%'에게 testdb.*에 대한 변경 루틴을 부여합니다. 이제 프로시저를 삭제하고
testdb.*에서 실행 권한을 부여할 수 있습니다. 개발자@'192.168.0.%';
3. 일반 DBA에게 MySQL 데이터베이스 관리 권한을 부여합니다.
testdb에 대한 모든 권한을 dba@'localhost'에 부여하세요
이 중 'privileges' 키워드는 생략 가능합니다.
4. 선임 DBA에게 MySQL의 모든 데이터베이스를 관리할 수 있는 권한을 부여합니다.
에게 부여합니다..에 대한 모든 권한을 dba@'localhost'
5. MySQL 부여 권한은 여러 수준에서 적용될 수 있습니다.
grant는 전체 MySQL 서버에서 작동합니다.
.에서 dba@localhost로 선택 — dba는 MySQL의 모든 데이터베이스에 있는 테이블을 쿼리할 수 있습니다.
.에 대한 모든 권한을 dba@localhost에 부여 — dba는 MySQL의 모든 데이터베이스를 관리할 수 있습니다.
단일 데이터베이스에서 Grant 작동:
testdb.*에서 dba@localhost로 선택 - dba는 testdb의 테이블을 쿼리할 수 있습니다.
grant는 단일 데이터 테이블에서 작동합니다.
testdb.orders에서 dba@localhost로 선택, 삽입, 업데이트, 삭제;
한 사용자에게 여러 테이블을 권한 부여하는 경우 위 명령문이 여러 번 실행될 수 있습니다. 예:
'123345′으로 식별되는 mo_user@'%'에게 smp.users에 대한 선택(user_id,username)을 부여합니다.
'123345′으로 식별되는 mo_user@'%'에게 smp.mo_sms에 대한 선택을 부여합니다.
grant는 테이블의 열에 대해 작동합니다.
testdb.apache_log에서 dba@localhost로 선택(id, se, Rank);
저장 프로시저 및 함수에 대한 부여 작업:
'dba'@'localhost'에 대한 testdb.pr_add 프로시저에서 실행
'dba'@'localhost'에 testdb.fn_add 함수에 대한 실행 권한 부여
6. MySQL 사용자 권한 보기
현재 사용자(자체) 권한 보기:
show grants;
다른 MySQL 사용자 권한 보기:
show grants for zhangkh@localhost;
7. MySQL 사용자에게 부여된 권한을 취소합니다.
revoke는 grant와 유사한 구문을 사용합니다. 키워드 "to"를 "from"으로 바꾸면 됩니다.
grant all on . to dba@localhost;
revoke all on . dba@localhost에서;
8. MySQL 사용자 권한 부여 및 취소에 대한 참고사항
사용자 권한을 부여하거나 취소하는 경우, 권한을 적용하려면 사용자가 MySQL 데이터베이스에 다시 연결해야 합니다.
승인된 사용자가 다른 사용자에게 이러한 권한을 부여하도록 하려면 "부여 옵션" 옵션이 필요합니다.
testdb.*에서 부여 옵션을 사용하여 dba@localhost로 선택;
이 기능은 일반적으로 사용되지 않습니다. 실제로 데이터베이스 권한은 DBA가 균일하게 관리하는 것이 가장 좋습니다.
MySQL 권한 부여 테이블에는 user, db, host, tables_priv 및 columns_priv의 5개 테이블이 있습니다.
인증 테이블의 내용은 다음과 같은 용도로 사용됩니다.
사용자 테이블
사용자 테이블에는 서버에 연결할 수 있는 사용자와 해당 비밀번호가 나열되며, 해당 사용자가 가지고 있는 전역(수퍼유저) 권한이 무엇인지 지정됩니다. 사용자 테이블에 활성화된 모든 권한은 전역 권한이며 모든 데이터베이스에 적용됩니다. 예를 들어 DELETE 권한을 활성화하면 여기에 나열된 사용자는 모든 테이블에서 레코드를 삭제할 수 있으므로 이 작업을 수행하기 전에 신중하게 생각하십시오.
db 테이블
db 테이블은 사용자가 액세스 권한을 가진 데이터베이스를 나열합니다. 여기에 지정된 권한은 데이터베이스의 모든 테이블에 적용됩니다.
호스트 테이블
호스트 테이블은 db 테이블과 결합하여 특정 호스트의 데이터베이스 접근 권한을 더 나은 수준으로 제어하는데, 이는 db만 사용하는 것보다 더 나을 수 있습니다. 이 테이블은 GRANT 및 REVOKE 문의 영향을 받지 않으므로 전혀 사용하지 않는 것을 알 수 있습니다.
tables_priv 테이블
tables_priv 테이블은 테이블 수준 권한을 지정합니다. 여기에 지정된 권한은 테이블의 모든 열에 적용됩니다.
columns_priv 테이블
columns_priv 테이블은 열 수준 권한을 지정합니다. 여기에 지정된 권한은 테이블의 특정 열에 적용됩니다.
참고:
GRANT USAGE ON의 경우 매뉴얼에서 다음 소개와 예를 확인하세요.
mysql> GRANT USAGE ON . TO 'zhangkh'@'localhost';
계정 사용자 이름 zhangkh는 있지만 비밀번호는 없습니다. 이 계정은 이 컴퓨터에서 연결하는 데에만 사용됩니다. 권한이 부여되지 않았습니다. GRANT 문에 USAGE 권한이 있으면 권한을 부여하지 않고도 계정을 생성할 수 있습니다. 모든 전역 권한을 'N'으로 설정할 수 있습니다. 나중에 이 계정에 특정 권한을 부여할 것으로 가정합니다.
루트로 로그인하고 다음 명령을 실행하세요
으아아아따옴표 안의 비밀번호는 다른 비밀번호, 즉 사용자 yisa의 로그인 비밀번호로 대체될 수 있습니다