Tôi có thể tạo cơ sở dữ liệu mới thông qua tài khoản gốc. Nhưng tôi cần tạo cơ sở dữ liệu mới bằng cách sử dụng một người dùng mới mà tôi đã tạo.
Đây là lỗi tôi đang gặp khi cố gắng tạo cơ sở dữ liệu bằng cách sử dụng người dùng mới
ERROR 1044 [42000]: Access denied for user 'user'@'localhost' to database 'new_db'
Làm thế nào tôi có thể cấp quyền cho "người dùng" để nó tạo ra bất kỳ số lượng cơ sở dữ liệu mới?
Update:
Đây cũng là những gì tôi đã thử:
mysql> grant all privileges on db.* to 'user'@'%' with create;
ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1
mysql>
Đã hỏi ngày 5 tháng 11 năm 2014 lúc 18:56Nov 5, 2014 at 18:56
Vĩnh cửu vĩnh cửuEternallyCurious
2.3356 Huy hiệu vàng45 Huy hiệu bạc76 Huy hiệu đồng6 gold badges45 silver badges76 bronze badges
2
Ví dụ PHP:
$con = new mysqli["...","...","..."]; // CONNECT TO DB WITH ROOT USER
mysqli_query[$con, "GRANT ALL PRIVILEGES ON newdb.* TO 'user'@'%' WITH GRANT OPTION"];
Ví dụ về dòng lệnh:
Đăng nhập với người dùng gốc và sử dụng điều này:
GRANT ALL PRIVILEGES ON newdb.* TO 'user'@'%' WITH GRANT OPTION;
Điều này sẽ tạo ra người dùng như thế nào được phép tạo cơ sở dữ liệu mới [nhưng cũng sẽ cung cấp cho anh ta tất cả các quyền để làm những thứ xấu, vì vậy hãy xử lý nó khôn ngoan ...].
Điều này chỉ dành cho Tạo:
GRANT CREATE ON *.* TO 'newuser'@'%' IDENTIFIED BY 'password'
Đã trả lời ngày 5 tháng 11 năm 2014 lúc 19:13Nov 5, 2014 at 19:13
Baaobaaobaao
68.7K16 Huy hiệu vàng131 Huy hiệu bạc187 Huy hiệu đồng16 gold badges131 silver badges187 bronze badges
16
13.1.12 & NBSP; Tạo câu lệnh cơ sở dữ liệu
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
CREATE DATABASE
tạo cơ sở dữ liệu với tên đã cho. Để sử dụng câu lệnh này, bạn cần đặc quyền CREATE
cho cơ sở dữ liệu. CREATE
SCHEMA
là một từ đồng nghĩa với CREATE
DATABASE
.
Một lỗi xảy ra nếu cơ sở dữ liệu tồn tại và bạn không chỉ định
mysql> grant all privileges on db.* to 'user'@'%' with create;
ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1
mysql>
0. CREATE DATABASE
không được phép trong một phiên có câu lệnh
mysql> grant all privileges on db.* to 'user'@'%' with create;
ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1
mysql>
2 hoạt động.Mỗi
mysql> grant all privileges on db.* to 'user'@'%' with create;
ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1
mysql>
3 chỉ định một đặc tính cơ sở dữ liệu. Các đặc điểm cơ sở dữ liệu được lưu trữ trong từ điển dữ liệu.Tùy chọn
4 chỉ định bộ ký tự cơ sở dữ liệu mặc định. Tùy chọnmysql> grant all privileges on db.* to 'user'@'%' with create; ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1 mysql>
5 chỉ định đối chiếu cơ sở dữ liệu mặc định. Để biết thông tin về tập hợp ký tự và tên đối chiếu, xem Chương & NBSP; 10, bộ ký tự, đối chiếu, Unicode.mysql> grant all privileges on db.* to 'user'@'%' with create; ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1 mysql>
Để xem các bộ ký tự và đối chiếu có sẵn, hãy sử dụng các câu lệnh
6 vàmysql> grant all privileges on db.* to 'user'@'%' with create; ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1 mysql>
7, tương ứng. Xem Phần & NBSP; 13.7.7.3, Tuyên bố của SHOW SET SET SET, và Phần & NBSP; 13.7.7.4, Báo cáo đối chiếu hiển thị.mysql> grant all privileges on db.* to 'user'@'%' with create; ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1 mysql>
Tùy chọn
8, được giới thiệu trong MySQL 8.0.16, xác định mã hóa cơ sở dữ liệu mặc định, được kế thừa bởi các bảng được tạo trong cơ sở dữ liệu. Các giá trị được phép làmysql> grant all privileges on db.* to 'user'@'%' with create; ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1 mysql>
9 [kích hoạt mã hóa] vàmysql> grant all privileges on db.* to 'user'@'%' with create; ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1 mysql>
0 [mã hóa bị vô hiệu hóa]. Nếu tùy chọn$con = new mysqli["...","...","..."]; // CONNECT TO DB WITH ROOT USER mysqli_query[$con, "GRANT ALL PRIVILEGES ON newdb.* TO 'user'@'%' WITH GRANT OPTION"];
8 không được chỉ định, giá trị của biến hệ thốngmysql> grant all privileges on db.* to 'user'@'%' with create; ERROR 1064 [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create option' at line 1 mysql>
2 xác định mã hóa cơ sở dữ liệu mặc định. Nếu biến hệ thống$con = new mysqli["...","...","..."]; // CONNECT TO DB WITH ROOT USER mysqli_query[$con, "GRANT ALL PRIVILEGES ON newdb.* TO 'user'@'%' WITH GRANT OPTION"];
3 được bật, đặc quyền$con = new mysqli["...","...","..."]; // CONNECT TO DB WITH ROOT USER mysqli_query[$con, "GRANT ALL PRIVILEGES ON newdb.* TO 'user'@'%' WITH GRANT OPTION"];
4 được yêu cầu để chỉ định cài đặt mã hóa mặc định khác với cài đặt$con = new mysqli["...","...","..."]; // CONNECT TO DB WITH ROOT USER mysqli_query[$con, "GRANT ALL PRIVILEGES ON newdb.* TO 'user'@'%' WITH GRANT OPTION"];
2. Để biết thêm thông tin, hãy xem xác định mặc định mã hóa cho các lược đồ và không gian bảng chung.$con = new mysqli["...","...","..."]; // CONNECT TO DB WITH ROOT USER mysqli_query[$con, "GRANT ALL PRIVILEGES ON newdb.* TO 'user'@'%' WITH GRANT OPTION"];
Một cơ sở dữ liệu trong MySQL được triển khai dưới dạng thư mục chứa các tệp tương ứng với các bảng trong cơ sở dữ liệu. Do không có bảng nào trong cơ sở dữ liệu khi nó được tạo ban đầu, câu lệnh CREATE DATABASE
chỉ tạo ra một thư mục trong thư mục dữ liệu MySQL. Các quy tắc cho tên cơ sở dữ liệu cho phép được đưa ra trong Phần & NBSP; 9.2, Tên đối tượng Schema Schema. Nếu một tên cơ sở dữ liệu chứa các ký tự đặc biệt, tên cho thư mục cơ sở dữ liệu chứa các phiên bản được mã hóa của các ký tự đó như được mô tả trong Phần & NBSP; 9.2.4, ánh xạ của các định danh vào tên tệp.
Tạo một thư mục cơ sở dữ liệu bằng cách tạo một thư mục theo cách thủ công trong thư mục dữ liệu [ví dụ: với MKDIR] không được hỗ trợ trong MySQL 8.0.mkdir] is unsupported in MySQL 8.0.
Khi bạn tạo cơ sở dữ liệu, hãy để máy chủ quản lý thư mục và các tệp trong đó. Thao tác trực tiếp các thư mục và tệp cơ sở dữ liệu có thể gây ra sự không nhất quán và kết quả không mong muốn.
MySQL không có giới hạn về số lượng cơ sở dữ liệu. Hệ thống tệp cơ bản có thể có giới hạn về số lượng thư mục.
Bạn cũng có thể sử dụng chương trình MySQLadmin để tạo cơ sở dữ liệu. Xem Phần & NBSP; 4.5.2, MySqladmin - Chương trình quản trị máy chủ MySQL.mysqladmin program to create databases. See Section 4.5.2, “mysqladmin — A MySQL Server Administration Program”.