Giter VIP home page Giter VIP logo

databaseprojects's Introduction

DatabaseProjects

Projects for CS307

Set Your Own Server

ssh
firewall
port 5432 allowed for postgresql, port 3306 allowed for mysql.

Set Up MySQL Service

Install MySQL

Based on official doc

sudo apt install mysql-server

now check the status of mysql by

sudo service mysql status

we should be able to see mysql service running:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-04-26 01:55:41 HKT; 19s ago
    Process: 17741 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 17749 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 4461)
     Memory: 365.6M
        CPU: 2.184s
     CGroup: /system.slice/mysql.service
             └─17749 /usr/sbin/mysqld

Now we need to change the setting so that the server can listen to other IPs

$ sudo ss -tap | grep mysql

LISTEN 0      151        127.0.0.1:mysql           0.0.0.0:*     users:(("mysqld",pid=17749,fd=23))
LISTEN 0      70         127.0.0.1:33060           0.0.0.0:*     users:(("mysqld",pid=17749,fd=21))

We could see that the service only listening to localhost at the moment, we need to change that.

sudo nvim /etc/mysql/mysql.conf.d/mysqld.cnf

vim is also available in this case.
In the vim or nvim, you can search for text with /:

/bind

Now press enter, the cursor should be around a line that looks like this:

bind-address           = 127.0.0.1

Press i to enter INSERT mode in editor, and change the line to:

bind-address           = 0.0.0.0

To save the change and exit vim or nvim, press esc to exit INSERT mode, then input

:wq

Now you should be back to the command line. Remember to restart the service with

sudo service mysql restart

Create User in MySQL

Enter mysql -u root -p to get into mysql service,
if this does not work, try sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;
exit;

And try again.

Next, we will create user for both local and remote clients:

create user 'client'@'%' IDENTIFIED BY 'new_password';
GRANT ALL PRIVILEGES ON *.* TO 'client'@'%' WITH GRANT OPTION;
GRANT FILE ON *.* TO 'client'@'%';

You can replace client with whatever username you like, '%' means from any ip, you can also replace it with a specific ip if you like. More specific here

You can only grant part of the privileges for a specific user like following:

GRANT SELECT ON project2.* TO 'guest'@'%';
REVOKE SELECT on project2.users FROM 'guest'@'%';
FLUSH PRIVILEGES;

The above code will allow 'guest'@'%' to access database project2 except table users.

From the client side, we should install mysql-client and header file:

sudo apt install mysql-client
sudo apt-get install libmysqlcppconn-dev
sudo apt-get install libmysqlclient-dev

then access the server with

mysql -u client -p -h 11.4.51.4

Replace client with your username, and replace the ip address with the actual ip of your server.

Enable Local Infile

This has to be enabled on both server and client sides:

Server Side

Add the following lines to /etc/mysql/my.cnf or /etc/mysql/my.ini, then restart the service.

[mysqld]
local_infile=1

Client Side

For normal use, start mysql with mysql --local-infile=1 -u myusername -p, and the execute the following sql queries:

USE project1;
CREATE TABLE IF NOT EXISTS rides (rail_user VARCHAR(255), start_station VARCHAR(255), end_station VARCHAR(255), price DOUBLE PRECISION, start_time TIMESTAMP, end_time TIMESTAMP);
LOAD DATA LOCAL INFILE "/tmp/rides.csv" into table `rides`
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

this should upload rides.csv to the database.

Set Up PostgreSQL Service

Install PostgreSQL

Based on official doc

sudo apt install postgresql

Similar process.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.