إنشاء قاعدة بيانات sqlite هو مجرد اتصال على ملف غير موجود في مجلد لك صلاحيات الكتابة فيه. أما إدارتها فهي أيضا بذات السهولة فهي ملفات تديرها كما تدير أي ملف على النظام من خلال صلاحيات الملف للمالك والمجموعة المالكة والبقية.
بعد تثبيت حزمة خادم mysql وقبل تشغيل الخادم لأول مرة يفضل أن تراجع ملف الإعدادات وهو /etc/my.cnf احتفظ بنسخة منه قبل أن تشرع بتعديله. الإعدادات الإفتراضية لا تفعل الكثير من الكاش فهي تناسب خادوم له مواصفات متواضع وحجم ذاكرة رام محدود جدا. ستجد إعدادات بديلة في مجلد /usr/share/doc/mysql-server-X.Y.Z/ مثل
القالب يحتوي العديد من التعليقات قد تحب أن تقرأه.
بعد ذلك يمكنك تشغيله عليه الأمر
service mysqld start
أو
systemctl start mysqld.service
إن كانت إعداداتك تفوق قدرة جهازك قم بمراجعة my.cnf والعودة لإعدادات أقل ثم جرب مجددا في أسوأ الأحواب قد تضطر أن تحذف مجلد /var/lib/mysql/ ثم تنفذ الأمر
/usr/libexec/mysqld-prepare-db-dir
يمكنك تعيين كلمة السر الخاصة بإدارة خادم قواعد البيانات عبر الأمر وضعها غير كلمة سر المستخدم الجذر لنظام التشغيل
mysqladmin -u root password
والأفضل أن تنفذ الأمر mysql_secure_installation والذي يعمل على ما يلي:
اكتب الأمر التالي للاتصال للتصال بقاعدة البيانات عبر unix file socket وهو الملف /var/lib/mysql/mysql.sock وليس عبر tcp/ip
mysql -u root
إن كنت قد حددت كلمة سر يمكنك إضافة الخيار p ثم كلمة السر دون مسافة أو تركها حتى يسألك عنها هكذا
mysql -u root -p
للاتصال عبر tcp/ip استعمل الخيار -h ثم العنوان هكذا
mysql -u root -p -h localhost
إذا كنت تتصل لتنفيذ استعلام واحد يمكنك تمريره بالخيار e أو تمريره عبد المدخلات القياسية عبر أنبوب | من echo أو cat أو عبر تحديد المدخلات بعلامة أقل من.
CREATE DATABASE my_test_db; CREATE DATABASE my_test_db DEFAULT CHARACTER SET = utf8;
ولعرض قواعد البيانات الموجودة نكتب
SHOW DATABASES;
انظر
مثال على إنشاء جدول
CREATE TABLE users ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(64) NOT NULL, phone VARCHAR(64) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ولعرض الجداول
SHOW TABLES;
لإنشاء مستخدم ادخل بصفة إدارية root ثم استعمل الأمر create user هكذا
CREATE USER 'ahmad' IDENTIFIED BY 'password';
هنا عملنا مستخدم اسمه ahmad على أي عنوان IP (عدا ال localhost عبر unix socket) وهو يكافئ الأمر
CREATE USER 'ahmad'@'%' IDENTIFIED BY 'password';
يمكنك اشتراط أو تحديد العنوان المستخدم في الدخول وهذا مفيد عندما تريد التراخي في كلمة السر عندما يكون الاتصال محليا (من يملك وصول لكامل الخادم فإنه إما موثوق أو تأخر الأمر فالغريق لا يخشى البلل)
CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'password';
%
فإن هذا لا يشمل unix socket وهو localhost.
يمكن منح الصلاحيات للمستخدم عبر GRANT وأشهر مثال هو GRANT ALL و GRANT SELECT وتعنيان اسمح له بكل شيء والثانية باستعلامات القراءة فقط.
GRANT ALL ON my_test_db.* TO 'ahmad'; GRANT SELECT ON *.* TO 'ali'@'localhost';
إذا كنت قد فعلت binary logs ووجدت أنها تستهلك مساحة القرص يمكنك حذف البيانات قبل تاريخ معين عبر الأمر
PURGE BINARY LOGS BEFORE '2014-07-15';
والأفضل تحديد القيم المناسبة في ملف my.cnf
expire_logs_days = 10 max_binlog_size = 100M
قواعد PostgreSQL هي الأقوى دون منازع في عالم البرمجيات مفتوحة المصدر وهي تتفوق على MySQL و MariaDB في العديد من الأمور.
في فيدورا (ومثيلاتها كريدهات وسنتوس) ثبت حزمة الوكيل client واسمها postgresql وحزمة الخادم وإضافاته هما postgresql-server و postgresql-contrib
yum install postgresql-server postgresql-contrib postgresql
في ديبيان (وأوبنتو ومنت) اسم حزمة الوكيل هو postgresql-client واسم حزمة الخادم وإضافاته هو postgresql و postgresql-contrib
apt-get install postgresql postgresql-contrib postgresql-client
في فيدورا يوجد ملف يشرح لك ويساعدك موجود في المسار (مع تعديل الرقم ) قد تحب أن تتصفحه
rpm -q postgresql less /usr/share/doc/postgresql-9.2.5/README.rpm-dist
الطريقة باختصار هي أن تكتب الأمر بصلاحيات الجذر
postgresql-setup initdb
هذا الأمر يستهل مجلد يحتوي إعدادات خادم PostgreSQL وبياناته الأساسية. هذا المجلد هو /var/lib/pgsql/
cd /var/lib/pgsql/ ls ls data less data/postgresql.conf
قد يختلف المسار من توزيع إلى أخرى وقد يعمل له روابط في أكثر من مكان. مسار ملف الإعدادات في أوبنتو هو داخل /etc/postgresql/current/main/.
داخل ملف postgresql.conf ستجد الكثير من التعليقات الإرشادية. أهم الخيارات التي قد تحتاج تغييرها
يمكنك تركها كما هي الآن.
لتشغيل الخادم في الأنظمة التي تعتمد systemd نستعمل systemctl هكذا
systemctl start postgresql
وليعمل تلقائيا عند إعادة تشغيل الجهاز نكتب
systemctl enable postgresql
ويمكنك استعمال service أو /etc/init.d كالمعتاد في التوزيعات الأخرى. مثلا لتشغيله في أوبنتو اكتب
/etc/init.d/postgresql start
من ملفات الإعدادات الأخرى التي نتجت من عملية الاستهلال وهما يتعلقان بطريقة الوثوق بالمستخدمين
اسم وكيل خادم postgresql هو psql. وهناك مستخدم على نظام التشغيل يثق به الخادم عند الاتصال عبر ملف المقبس unix file socket وليس عبر TCP/IP اسم هذا المستخدم (على الأقل في فيدورا وأوبنتو) هو postgres. لذا يمكنك تشغيل الوكيل بالأمر التالي
su postgres -c psql sudo -u postgres psql
وسيظهل على شاشتك شيء يشبه هذا
could not change directory to "/root" psql (9.2.5) Type "help" for help. postgres=# help You are using psql, the command-line interface to PostgreSQL. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit
تبدأ أوامر psql بعلامة الشرطة المائلة الخلفية \ ثم حرف أو كلمة ومن أهمها
تأتي حزمة الوكيل بعدد من البرامج التي تثبت في النظام منها
تذكر مستخدم قاعدة البيانات الذي يوافق اسمه اسم مستخدم نظام التشغيل لا يطلب منه تقديم كلمة سر وهذا هو السبب الذي يسمح لنا بالدخول عبر sudo أو su دون كتابة كلمة سر. طريقة الوثوق هذه تسمى peer وتعني أن قاعدة البيانات تثق فيمن يثق به نظام التشغيل.
إذا كان اسم معرفك هو ahmad فلنعمل مستخدم لقاعدة البيانات باسمه وقاعدة بيانات بنفس الاسم ونجعله مالكا لها (عبر O أي owner)
sudo -u postgres createuser ahmad sudo -u postgres createdb -O ahmad ahmad
جرب الآن الدخول بمجرد كتابة psql كما في هذه الجلسة.
[ahmad@localhost ~]$ psql psql (9.2.5) Type "help" for help. ahmad=> \conninfo You are connected to database "ahmad" as user "ahmad" via socket in "/var/run/postgresql" at port "5432".
حتى ندخل باسم مستخدم وكلمة سر تأكد من تفعيل الدخول عبر طريقة اسمها md5 من خلال تحرير ملف pg_hba.conf الذي تحدثنا عنه. أضف السطرين التاليين إن لم يكونا موجودين
local all all md5 host all all 127.0.0.1/32 md5
يمكنك السماح لعناوين أخرى الدخول عبر الشبكة إن كان يلزمك من خلال سطر إضافي من نوع host مع العنوان الذي تريده أو 0.0.0.0/0 لكل العناوين.
الآن أعد تشغيل قاعدة البيانات وجرب وأنت مستخدم عادي (اسمه أحمد في مثالنا) الدخول باسم postgres الذي غيرنا كلمة سره في أول المقال.
psql -U postgres -h localhost
انظر
عند عمل قاعدة البيانات لاحظ تمرير O لتحديد مالكها. يمكنك إدارة صلاحيات الوصول عبر GRANT كما شرحنا في أول المقالة عن mysql للمزيد من المعلومات اكتب
sudo -u postgres psql -c '\h grant'
مثلا
GRANT SELECT ON DATABASE mydb TO myuser; GRANT ALL ON DATABASE mydb TO otheruser;
للمزيد انظر