-- database_script.sql | |||||
USE `{{DB_NAME}}`; | |||||
-- Drop and create database if it does not exist | |||||
DROP DATABASE IF EXISTS globaltempDB; | |||||
CREATE DATABASE IF NOT EXISTS globaltempDB; | |||||
USE `{{DB_NAME}}`; | |||||
DROP PROCEDURE IF EXISTS nextsequence; | |||||
DELIMITER // | |||||
CREATE PROCEDURE nextsequence( | |||||
IN sequencenames VARCHAR(255), | |||||
IN node BINARY(16), | |||||
IN cluster BINARY(16) | |||||
) | |||||
BEGIN | |||||
DECLARE _next TEXT DEFAULT NULL; | |||||
DECLARE _nextlen INT DEFAULT NULL; | |||||
DECLARE _value TEXT DEFAULT NULL; | |||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION | |||||
BEGIN | |||||
SHOW ERRORS; | |||||
ROLLBACK; | |||||
END; | |||||
START TRANSACTION; | |||||
IF (sequencenames IS null OR TRIM(sequencenames) = '') THEN | |||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Either a table name or a sequence name is required.'; | |||||
END IF; | |||||
SET @database = (SELECT DATABASE()); | |||||
iterator: | |||||
LOOP | |||||
IF CHAR_LENGTH(TRIM(sequencenames)) = 0 OR sequencenames IS NULL THEN | |||||
LEAVE iterator; | |||||
END IF; | |||||
SET _next = SUBSTRING_INDEX(sequencenames, ',', 1); | |||||
SET _nextlen = CHAR_LENGTH(_next); | |||||
SET @sequencename = TRIM(_next); | |||||
SET sequencenames = INSERT(sequencenames, 1, _nextlen + 1, ''); | |||||
SET @SQL = CONCAT('SELECT EXISTS(SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_name LIKE ''', @sequencename, ''' AND table_schema = ''globaltempdb'') INTO @e'); | |||||
PREPARE stmt FROM @SQL; | |||||
EXECUTE stmt; | |||||
DEALLOCATE PREPARE stmt; | |||||
IF @e = 0 THEN | |||||
SET @SQL = CONCAT('CREATE TABLE globaltempDB.', @sequencename, ' ( ', @sequencename, 'iId bigint not null, ', @sequencename, 'CiId bigint null, seq_db VARCHAR(50) not null )'); | |||||
PREPARE stmt FROM @SQL; | |||||
EXECUTE stmt; | |||||
DEALLOCATE PREPARE stmt; | |||||
SET @SQL = CONCAT('INSERT globaltempDB.', @sequencename, ' (', @sequencename, 'iId, ', @sequencename, 'CiId, seq_db) VALUES(0, 0, ''', @database , ''')'); | |||||
PREPARE stmt FROM @SQL; | |||||
EXECUTE stmt; | |||||
DEALLOCATE PREPARE stmt; | |||||
END IF; | |||||
SET @SQL = CONCAT('UPDATE globaltempDB.', @sequencename, ' SET ', @sequencename, 'iId = LAST_INSERT_ID(', @sequencename, 'iId + 1)'); | |||||
PREPARE stmt FROM @SQL; | |||||
EXECUTE stmt; | |||||
DEALLOCATE PREPARE stmt; | |||||
SET @SQL = CONCAT('SELECT LAST_INSERT_ID() AS ', @sequencename, 'iId, null AS ', @sequencename, 'CiId'); | |||||
PREPARE stmt FROM @SQL; | |||||
EXECUTE stmt; | |||||
DEALLOCATE PREPARE stmt; | |||||
END LOOP; | |||||
COMMIT; | |||||
END // | |||||
DELIMITER ; | |||||
-- Repeat for the second stored procedure 'receivablerequest' | |||||
USE `{{DB_NAME}}`; | |||||
DROP PROCEDURE IF EXISTS receivablerequest; | |||||
DELIMITER // | |||||
CREATE PROCEDURE receivablerequest( | |||||
IN `PERIOD` INT | |||||
) | |||||
BEGIN | |||||
SET @PERIOD = 1; | |||||
SET @BOD = (SELECT CONVERT_TZ(UTC_DATE(), @@session.time_zone, '+00:00')); | |||||
SET @PBEGIN = (SELECT DATE_SUB(@BOD, INTERVAL DAYOFMONTH(@BOD) DAY)); | |||||
SET @PEND = (SELECT DATE_ADD(DATE_SUB(@BOD, INTERVAL DAYOFMONTH(@BOD) DAY), INTERVAL 1 MONTH)); | |||||
SELECT `receivablerequest`.`receivablerequestId`, | |||||
`receivablerequest`.`comments`, | |||||
`receivablerequest`.`from`, | |||||
`receivablerequest`.`to`, | |||||
`receivablerequest`.`quantity`, | |||||
`receivablerequest`.`v1receivablerequestId`, | |||||
`receivablerequest`.`receivablerequestCiId`, | |||||
`receivablerequest`.`receivablerequestns`, | |||||
`receivablerequest`.`receivablerequestiId`, | |||||
`receivablerequest`.`datecreated`, | |||||
`receivablerequest`.`timestamp`, | |||||
`receivablerequest`.`migrationstate`, | |||||
`receivablerequest`.`datemodified`, | |||||
`receivablerequest`.`requestedbyId`, | |||||
`receivablerequest`.`departmentId`, | |||||
`receivablerequest`.`itemId`, | |||||
`receivablerequest`.`receivablerequestnumber`, | |||||
`statechange`.`state` | |||||
FROM `receivablerequest` | |||||
INNER JOIN statechange ON statechange.statechangeforId = `receivablerequest`.`receivablerequestId` | |||||
WHERE `receivablerequest`.from >= @PBEGIN AND `receivablerequest`.from < @PEND | |||||
UNION ALL | |||||
SELECT uuid() AS `receivablerequestId`, | |||||
'system request for period' AS `comments`, | |||||
CONVERT(@PBEGIN, DATETIME) AS `from`, | |||||
CONVERT(@PEND , DATETIME) AS `to`, | |||||
CASE WHEN consumption.qty IS NULL THEN item.max ELSE consumption.qty END AS `quantity`, | |||||
NULL AS `v1receivablerequestId`, | |||||
NULL AS `receivablerequestCiId`, | |||||
'sys_auto' AS `receivablerequestns`, | |||||
NULL AS `receivablerequestiId`, | |||||
UTC_TIMESTAMP() AS `datecreated`, | |||||
UTC_TIMESTAMP() AS `timestamp`, | |||||
8 AS `migrationstate`, | |||||
UTC_TIMESTAMP() AS `datemodified`, | |||||
NULL AS `requestedbyId`, | |||||
NULL AS `departmentId`, | |||||
`item`.`itemId`, | |||||
NULL AS `receivablerequestnumber`, | |||||
'yet to order' AS `state` | |||||
FROM item | |||||
LEFT JOIN ( | |||||
SELECT AVG(saleitem.quantity) AS qty, receiveditem.itemId, department.departmentId | |||||
FROM saleitem | |||||
INNER JOIN receiveditem ON saleitem.billableId = receiveditem.receiveditemId | |||||
INNER JOIN encounter ON encounter.encounterId = saleitem.encounterId | |||||
INNER JOIN department ON encounter.departmentId = department.departmentId | |||||
GROUP BY departmentId | |||||
) consumption ON item.itemId = `consumption`.`itemId` | |||||
LEFT JOIN ( | |||||
SELECT itemId FROM receivablerequest | |||||
INNER JOIN statechange ON statechange.statechangeforId = receivablerequest.receivablerequestId | |||||
WHERE receivablerequest.datecreated >= @PBEGIN AND receivablerequest.datecreated < @PEND | |||||
) requested ON requested.itemId = item.itemId | |||||
WHERE requested.itemId IS NULL; | |||||
END // | |||||
DELIMITER ; | |||||
# Get the current user (who is running this script) | # Get the current user (who is running this script) | ||||
current_user=$(whoami) | current_user=$(whoami) | ||||
# Determine the group to add the user to based on the OS | |||||
if [ -f /etc/os-release ]; then | |||||
. /etc/os-release | |||||
OS_NAME=$NAME | |||||
fi | |||||
# Function to check the OS type | |||||
is_centos() { | |||||
# Check if the OS is CentOS | |||||
if [ -f /etc/os-release ]; then | |||||
. /etc/os-release | |||||
if [[ "$NAME" == "CentOS Linux" ]] || [[ "$NAME" == "CentOS" ]]; then | |||||
return 0 # It's CentOS | |||||
fi | |||||
fi | |||||
return 1 # Not CentOS | |||||
} | |||||
# Set ROOT directory | |||||
ROOT="./chess/production_A" | |||||
# Check if the system is Ubuntu/Debian or CentOS/RHEL | |||||
if [[ "$OS_NAME" == "Ubuntu" ]] || [[ "$OS_NAME" == "Debian" ]]; then | |||||
GROUP_NAME="sudo" # Ubuntu/Debian systems typically use 'sudo' | |||||
else | |||||
GROUP_NAME="wheel" # CentOS/RHEL typically use 'wheel' | |||||
fi | |||||
# Trim whitespace from both current_user and username | |||||
current_user=$(echo "$current_user" | xargs) | |||||
username=$(echo "$username" | xargs) | |||||
echo $current_user | |||||
echo $username | |||||
# 1. Check if the current user is the same as the username to create | # 1. Check if the current user is the same as the username to create | ||||
if [ "$current_user" == "$username" ]; then | if [ "$current_user" == "$username" ]; then | ||||
echo "Script launched from same user!" | echo "Script launched from same user!" | ||||
echo $PWD | echo $PWD | ||||
wget -q -O - http://git.bbh/chess/elxr/raw/branch/master/centosinit.sh > $ROOT/centosinit.sh | |||||
sudo chmod u+x $ROOT/centosinit.sh | |||||
sh $ROOT/centosinit.sh | |||||
# Only run this block if it's CentOS | |||||
if is_centos; then | |||||
echo "This is CentOS. Running CentOS specific script..." | |||||
# Download and run CentOS-specific script | |||||
wget -q -O - http://git.bbh/chess/elxr/raw/branch/master/centosinit.sh > $ROOT/centosinit.sh | |||||
sudo chmod u+x $ROOT/centosinit.sh | |||||
sh $ROOT/centosinit.sh | |||||
else | |||||
echo "This is not CentOS. Skipping CentOS-specific setup." | |||||
fi | |||||
# Platform-specific installation | # Platform-specific installation | ||||
if [ -f /etc/os-release ]; then | if [ -f /etc/os-release ]; then | ||||
install_package "gcc-c++" | install_package "gcc-c++" | ||||
fi | fi | ||||
# Installing Node.js and NVM | |||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash | |||||
sleep 2 | |||||
# Install NVM (Node Version Manager) | |||||
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash | |||||
sleep 2 | |||||
# Add NVM configuration to .bash_profile | |||||
# Add NVM configuration to .bash_profile if it's not already there | |||||
if ! grep -q 'export NVM_DIR="$HOME/.nvm"' ~/.bash_profile; then | |||||
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bash_profile | echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bash_profile | ||||
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bash_profile | echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bash_profile | ||||
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bash_profile | echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bash_profile | ||||
fi | |||||
# Source .bash_profile to apply NVM setup | |||||
source ~/.bash_profile | |||||
# Source .bash_profile to apply NVM setup | |||||
source ~/.bash_profile | |||||
# Verify NVM installation | |||||
command -v nvm | |||||
# Install Node.js | # Install Node.js | ||||
nvm install v16.19.1 | nvm install v16.19.1 | ||||
# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cihsr'; | # ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cihsr'; | ||||
# FLUSH PRIVILEGES; | # FLUSH PRIVILEGES; | ||||
# mysql -u root -p cihsr < cihsr_prod.sql | |||||
bash elxr/load.mysql.init.sh | |||||
bash elxr/load.mysql.sh | |||||
bash elxr/i.sqlexpress.sh | |||||
bash elxr/load.sqlexpress.sh |
sudo apt update | |||||
sudo apt install openssh-server |
sudo /opt/mssql/bin/mssql-conf setup | sudo /opt/mssql/bin/mssql-conf setup | ||||
# Check if SQL Server is running | # Check if SQL Server is running | ||||
systemctl status mssql-server | |||||
#systemctl status mssql-server | |||||
# Enable SQL Server to start on boot | # Enable SQL Server to start on boot | ||||
sudo systemctl enable mssql-server | sudo systemctl enable mssql-server | ||||
# (Optional) Open SQL Server port for remote access | # (Optional) Open SQL Server port for remote access | ||||
#sudo firewall-cmd --permanent --zone=public --add-port=1433/tcp | |||||
#sudo firewall-cmd --reload | |||||
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent | |||||
sudo firewall-cmd --reload | |||||
# (Optional) Install SQL Server command-line tools | # (Optional) Install SQL Server command-line tools | ||||
sudo dnf install -y mssql-tools | |||||
#sudo dnf install -y mssql-tools | |||||
# curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo | |||||
curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo | |||||
sudo yum remove mssql-tools unixODBC-utf16 unixODBC-utf16-devel | |||||
sudo yum install -y mssql-tools18 unixODBC-devel | |||||
sudo yum check-update | |||||
sudo yum update mssql-tools18 | |||||
sudo dnf install mssql-tools --assumeyes | |||||
sudo dnf install -y msodbcsql18 | |||||
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile | |||||
source ~/.bash_profile | |||||
# Connect to SQL Server using sqlcmd | # Connect to SQL Server using sqlcmd | ||||
sqlcmd --version | sqlcmd --version | ||||
#sqlcmd -S localhost -U sa -P '<your_password>' | |||||
#sqlcmd -C -S localhost -U sa -P '<your_password>' | |||||
#sqlcmd -S localhost -U sa -C |
# https://www.geeksforgeeks.org/how-to-install-sql-server-express-in-linux/ | |||||
# https://learn.microsoft.com/en-us/answers/questions/1685683/how-to-install-sql-server-2022-on-ubuntu-server-24 | |||||
#!/bin/bash | |||||
curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
sudo dpkg -i libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
sudo dpkg -i libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
#First upgrade ubuntu to fix libc packaging issues. | |||||
#Then | |||||
sudo apt upgrade libsasl2-2 | |||||
sudo apt --fix-broken install | |||||
sudo apt upgrade libldap-2.5-0 | |||||
sudo apt --fix-broken install | |||||
# Detect OS type | |||||
if [ -f /etc/os-release ]; then | |||||
. /etc/os-release | |||||
OS_NAME=$NAME | |||||
OS_VERSION=$VERSION_ID | |||||
fi | |||||
sudo apt update | |||||
sudo apt install -y libldap-2.5-0 | |||||
sudo apt install libldap-common | |||||
echo "Detected OS: $OS_NAME $OS_VERSION" | |||||
# Function to install SQL Server on Ubuntu | |||||
install_sqlserver_ubuntu() { | |||||
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y | |||||
sudo do-release-upgrade | |||||
#curl -OL http://archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
#sudo apt-get install ./libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
sudo apt update && sudo apt install libc6 | |||||
sudo apt install libgnutls30 libsasl2-2 | |||||
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | |||||
sudo apt upgrade libsasl2-2 | |||||
sudo apt upgrade libgnutls30 | |||||
sudo apt upgrade libc6 | |||||
curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
# sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)” | |||||
# sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)” | |||||
# sudo apt install curl | |||||
wget http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
sudo dpkg -i libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
wget http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
sudo dpkg -i libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
sudo apt upgrade libldap-2.5-0 | |||||
sudo apt update && sudo apt install -y mssql-server | |||||
sudo /opt/mssql/bin/mssql-conf setup | |||||
# Add Microsoft SQL Server repository for Ubuntu using wget | |||||
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | |||||
wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
#wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/prod.repo | sudo tee /etc/apt/sources.list.d/mssql-server.list | |||||
#sudo systemctl status mssql-server.service | |||||
sudo systemctl status mssql-server --no-pager | |||||
sudo ldd /opt/mssql/bin/sqlservr | |||||
# Update repository and install SQL Server | |||||
sudo apt update && sudo apt install -y mssql-server | |||||
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list | |||||
sudo apt update && sudo apt install -y mssql-tools unixodbc-dev | |||||
sudo ln -s /opt/mssql-tools/bin/sqlcmd /usr/local/bin | |||||
sqlcmd -S localhost -U SA | |||||
# Run the setup to configure SQL Server | |||||
sudo /opt/mssql/bin/mssql-conf setup | |||||
setfacl -R -m u:mssql:rwx ~/elvt/pgsys/elixir-data/dbs/elixir/run | |||||
# Enable SQL Server to start on boot | |||||
sudo systemctl enable mssql-server | |||||
SELECT OBJECT_SCHEMA_NAME(object_id) AS SchemaName, name AS TableName | |||||
FROM master.sys.objects WHERE type_desc = 'USER_TABLE' AND is_ms_shipped = 0; | |||||
# (Optional) Open SQL Server port for remote access | |||||
sudo ufw allow 1433/tcp | |||||
# (Optional) Install SQL Server command-line tools | |||||
wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list | |||||
sudo apt update && sudo apt install -y mssql-tools unixodbc-dev | |||||
# Install redis | |||||
# https://docs.vultr.com/how-to-install-redis-on-ubuntu-24-04 | |||||
sudo apt install redis-server | |||||
sudo systemctl enable redis-server.service | |||||
sudo systemctl start redis | |||||
# wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/prod.repo | sudo tee /etc/apt/sources.list.d/mssql-release.list | |||||
# sudo apt update | |||||
# sudo apt install -y mssql-tools unixodbc-dev | |||||
# Add mssql-tools to PATH | |||||
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc | |||||
source ~/.bashrc | |||||
# sqlcmd -S localhost -U sa -Q "RESTORE DATABASE [ELIXIR_DEV] FROM DISK = N'/home/elvt/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5" | |||||
# Verify installation | |||||
sqlcmd --version | |||||
} | |||||
cp /home/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' /tmp | |||||
sqlcmd -S localhost -U sa -Q "RESTORE DATABASE ELIXIR FROM DISK = '/tmp/reduced_elixir_backup' WITH MOVE 'Elixir' TO '/var/opt/mssql/data/elixir.mdf', MOVE 'Elixir_log' TO '/var/opt/mssql/data/elixir_log.ldf'" | |||||
# Function to install SQL Server on CentOS | |||||
install_sqlserver_centos() { | |||||
# Remove any existing mssql-server repo | |||||
sudo rm -f /etc/yum.repos.d/mssql-server.repo | |||||
# Add Microsoft SQL Server repository for CentOS using wget | |||||
wget -qO /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo | |||||
# Clean all dnf caches and make a new one | |||||
sudo dnf clean all | |||||
sudo dnf makecache | |||||
# Install SQL Server Express | |||||
sudo dnf install -y mssql-server | |||||
# Run the setup to configure SQL Server | |||||
sudo /opt/mssql/bin/mssql-conf setup | |||||
# Enable SQL Server to start on boot | |||||
sudo systemctl enable mssql-server | |||||
# (Optional) Open SQL Server port for remote access | |||||
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent | |||||
sudo firewall-cmd --reload | |||||
# (Optional) Install SQL Server command-line tools | |||||
wget -qO https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo | |||||
sudo yum remove -y mssql-tools unixODBC-utf16 unixODBC-utf16-devel | |||||
sudo yum install -y mssql-tools18 unixODBC-devel | |||||
sudo dnf install -y msodbcsql18 | |||||
# Add mssql-tools to PATH | |||||
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile | |||||
source ~/.bash_profile | |||||
# Verify installation | |||||
sqlcmd --version | |||||
} | |||||
# Check the OS type and call appropriate function | |||||
if [[ "$OS_NAME" == "Ubuntu" || "$OS_NAME" == "Debian" ]]; then | |||||
echo "Installing Microsoft SQL Server on Ubuntu..." | |||||
install_sqlserver_ubuntu | |||||
elif [[ "$OS_NAME" == "CentOS" || "$OS_NAME" == "Red Hat" || "$OS_NAME" == "Fedora" ]]; then | |||||
echo "Installing Microsoft SQL Server on CentOS..." | |||||
install_sqlserver_centos | |||||
else | |||||
echo "Unsupported OS. This script is designed for Ubuntu or CentOS." | |||||
exit 1 | |||||
fi | |||||
# Finished | |||||
echo "SQL Server installation completed successfully!" | |||||
# # https://www.geeksforgeeks.org/how-to-install-sql-server-express-in-linux/ | |||||
# # https://learn.microsoft.com/en-us/answers/questions/1685683/how-to-install-sql-server-2022-on-ubuntu-server-24 | |||||
# curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
# sudo dpkg -i libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
# curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
# sudo dpkg -i libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
# #First upgrade ubuntu to fix libc packaging issues. | |||||
# #Then | |||||
# # sudo apt --fix-broken install | |||||
# # sudo apt upgrade libsasl2-2 | |||||
# sudo apt upgrade libgnutls30 | |||||
# # sudo apt upgrade libldap-2.5-0 | |||||
# # sudo apt --fix-broken install | |||||
# sudo apt --fix-broken install | |||||
# sudo apt upgrade libsasl2-2 | |||||
# sudo apt update && sudo apt install -y libldap-2.5-0 | |||||
# sudo apt install libldap-common | |||||
# #curl -OL http://archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
# #sudo apt-get install ./libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
#SQL SERVER | |||||
# wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | |||||
# wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
# curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
# # sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)” | |||||
# # sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)” | |||||
# sudo apt update && sudo apt install -y mssql-server | |||||
# sudo /opt/mssql/bin/mssql-conf setup | |||||
# #sudo systemctl status mssql-server.service | |||||
# sudo systemctl status mssql-server --no-pager | |||||
# sudo ldd /opt/mssql/bin/sqlservr | |||||
# curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list | |||||
# sudo apt update && sudo apt install -y mssql-tools unixodbc-dev | |||||
# sudo ln -s /opt/mssql-tools/bin/sqlcmd /usr/local/bin | |||||
# sqlcmd -S localhost -U SA | |||||
# setfacl -R -m u:mssql:rwx ~/elvt/pgsys/elixir-data/dbs/elixir/run | |||||
# SELECT OBJECT_SCHEMA_NAME(object_id) AS SchemaName, name AS TableName | |||||
# FROM master.sys.objects WHERE type_desc = 'USER_TABLE' AND is_ms_shipped = 0; | |||||
# # Install redis | |||||
# # https://docs.vultr.com/how-to-install-redis-on-ubuntu-24-04 | |||||
# sudo apt install redis-server | |||||
# sudo systemctl enable redis-server.service | |||||
# sudo systemctl start redis | |||||
# # sqlcmd -S localhost -U sa -Q "RESTORE DATABASE [ELIXIR_DEV] FROM DISK = N'/home/elvt/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5" | |||||
# cp /home/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' /tmp | |||||
# sqlcmd -S localhost -U sa -Q "RESTORE DATABASE ELIXIR FROM DISK = '/tmp/reduced_elixir_backup' WITH MOVE 'Elixir' TO '/var/opt/mssql/data/elixir.mdf', MOVE 'Elixir_log' TO '/var/opt/mssql/data/elixir_log.ldf'" |
return any(tasks).then(() => { | return any(tasks).then(() => { | ||||
gitRepos.push({ repo : 'chess-server-lib/server'}); | gitRepos.push({ repo : 'chess-server-lib/server'}); | ||||
gitRepos.push({ repo : 'elixir-client/client'}); | |||||
gitRepos = gitRepos.concat(elevatedRunasRepos); | gitRepos = gitRepos.concat(elevatedRunasRepos); | ||||
// console.dir(gitRepos) | // console.dir(gitRepos) | ||||
// throw "" | // throw "" | ||||
) | ) | ||||
if (npmbuildrepos.indexOf(repodef.repo) < 0) { | if (npmbuildrepos.indexOf(repodef.repo) < 0) { | ||||
// if(repodef.repo === 'elixir-client' || 'cihsr-client' === repodef.repo) { | |||||
// // PB : TODO -- MAybe loop for sub folders with package.json | |||||
// repotasks.push( | |||||
// () => { | |||||
// console.log(`--npm i for ${repodef.repo}/client--------------------`) | |||||
// var p = nodeShellExec('npm', ['i', '--force'], { | |||||
// inherit: true, shell: true | |||||
// , cwd: instanceroot + '/' + repodef.repo + '/client' | |||||
// , env | |||||
// , title: `npm i for ${repodef.repo}/client` | |||||
// }).then(Tasq.then).catch(Tasq.catch) | |||||
// return p; | |||||
// }) | |||||
// } | |||||
// } | |||||
repotasks.push( | repotasks.push( | ||||
() => { | () => { | ||||
console.log(`--npm i for ${repodef.repo}--------------------`) | console.log(`--npm i for ${repodef.repo}--------------------`) |
#!/bin/bash | |||||
# Prompt for MySQL root password securely | |||||
read -sp "Enter MySQL root password: " MYSQL_PASSWORD | |||||
echo # Newline after password input | |||||
DEFAULT_INSTANCENAME="cihsr" | |||||
echo "Enter instance name (default: $DEFAULT_INSTANCENAME):" | |||||
read instancename | |||||
INSTANCENAME=${instancename:-$DEFAULT_INSTANCENAME} | |||||
# Prompt for the database name with a default value | |||||
read -p "Enter the database name (default: cihsr): " DB_NAME | |||||
DB_NAME=${DB_NAME:-$INSTANCENAME} | |||||
# Default the SQL file to 'create.mysql.db.sql' in the current directory | |||||
SQL_FILE="elxr/create.mysql.db.sql" | |||||
# Confirm if the SQL file exists | |||||
if [[ ! -f "$SQL_FILE" ]]; then | |||||
echo "SQL file '$SQL_FILE' does not exist in the current directory. Please check the file path and try again." | |||||
exit 1 | |||||
fi | |||||
# MySQL user credentials | |||||
MYSQL_USER="root" | |||||
# Check if the database exists | |||||
DB_EXISTS=$(mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES LIKE '$DB_NAME';") | |||||
if [[ -z "$DB_EXISTS" ]]; then | |||||
# Database does not exist, create it | |||||
echo "Database '$DB_NAME' does not exist. Creating database..." | |||||
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE IF NOT EXISTS $DB_NAME;" | |||||
fi | |||||
# Replace the placeholder {{DB_NAME}} in the SQL file with the database name | |||||
TEMP_SQL_FILE=$(mktemp) | |||||
sed "s/{{DB_NAME}}/$DB_NAME/g" "$SQL_FILE" > "$TEMP_SQL_FILE" | |||||
# Run the SQL script with the provided database name | |||||
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME < "$TEMP_SQL_FILE" | |||||
# Clean up the temporary file | |||||
rm "$TEMP_SQL_FILE" | |||||
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME < $SQL_FILE -- Create Schema | |||||
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME < $DB_NAME.sql -- Load data | |||||
echo "SQL script executed successfully on database $DB_NAME" |
#!/bin/bash | |||||
# Prompt for MySQL root password securely | |||||
read -sp "Enter MySQL root password: " MYSQL_PASSWORD | |||||
echo # Newline after password input | |||||
DEFAULT_INSTANCENAME="elixir" | |||||
echo "Enter instance name (default: $DEFAULT_INSTANCENAME):" | |||||
read instancename | |||||
INSTANCENAME=${instancename:-$DEFAULT_INSTANCENAME} | |||||
# Prompt for the database name with a default value | |||||
read -p "Enter the database name (default: cihsr): " DB_NAME | |||||
DB_NAME=${DB_NAME:-$INSTANCENAME} | |||||
cp /home/elvt/pgsys/$INSTANCENAME-data/dbdumps/reduced_$INSTANCENAME_backup' /tmp | |||||
sqlcmd -S localhost -U sa -Q "RESTORE DATABASE ELIXIR FROM DISK = '/tmp/reduced_$INSTANCENAME_backup' WITH MOVE 'Elixir' TO '/var/opt/mssql/data/$INSTANCENAME.mdf', MOVE '$INSTANCENAME_log' TO '/var/opt/mssql/data/$INSTANCENAME_log.ldf'" | |||||
rm /tmp/reduced_$INSTANCENAME_backup |
# Step 6: Change authentication plugin to mysql_native_password | # Step 6: Change authentication plugin to mysql_native_password | ||||
echo "Changing authentication plugin for MySQL root user..." | echo "Changing authentication plugin for MySQL root user..." | ||||
mysql -u root -p"$ROOT_PASSWORD" <<-EOF | mysql -u root -p"$ROOT_PASSWORD" <<-EOF | ||||
USE mysql | |||||
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$ROOT_PASSWORD'; | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$ROOT_PASSWORD'; | ||||
FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||||
EOF | EOF |