73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
|
|
import shutil
|
|||
|
|
import time
|
|||
|
|
|
|||
|
|
from Common import *
|
|||
|
|
|
|||
|
|
|
|||
|
|
class InstallMariaDb:
|
|||
|
|
|
|||
|
|
def __init__(self, install_path):
|
|||
|
|
self.service_name = 'ComacMariaDB'
|
|||
|
|
self.root_path = install_path
|
|||
|
|
self.mariadb_data_path = os.path.join(install_path, 'mariadb', 'data')
|
|||
|
|
self.mariadb_port = 3417
|
|||
|
|
self.passowrd = '1qaz@WSX'
|
|||
|
|
self.init_schema = 'em_data_prod'
|
|||
|
|
self.init_sql = os.path.join(install_path, 'mariadb', 'data', 'init.sql')
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
def start_install_mariadb(self):
|
|||
|
|
existStatus = check_service_exist(self.service_name)
|
|||
|
|
if existStatus:
|
|||
|
|
start_service_if_not_running(self.service_name)
|
|||
|
|
return
|
|||
|
|
logger.info("开始安装")
|
|||
|
|
self.__register_service()
|
|||
|
|
logger.info("启动数据库")
|
|||
|
|
self.__start_mariadb()
|
|||
|
|
logger.info("数据库用户初始化")
|
|||
|
|
self.__init_db_user()
|
|||
|
|
logger.info("数据库初始化")
|
|||
|
|
self.__init_db()
|
|||
|
|
logger.info("安装完成,10秒后进行数据库服务安装")
|
|||
|
|
time.sleep(10)
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
def __start_mariadb(self):
|
|||
|
|
command = 'net start ' + self.service_name
|
|||
|
|
with os.popen(command) as stream:
|
|||
|
|
res = stream.read()
|
|||
|
|
logger.info(res)
|
|||
|
|
|
|||
|
|
def __register_service(self):
|
|||
|
|
args1 = self.root_path + '/mariadb/bin/mysql_install_db.exe'
|
|||
|
|
args2 = '--datadir=' + self.mariadb_data_path
|
|||
|
|
args3 = '--service=' + self.service_name
|
|||
|
|
args4 = '--password=' + self.passowrd
|
|||
|
|
args5 = '--port=' + str(self.mariadb_port)
|
|||
|
|
res = subprocess.run([args1, args2, args3, args4, args5], text=True, capture_output=True)
|
|||
|
|
logger.info(res.stdout)
|
|||
|
|
return res
|
|||
|
|
|
|||
|
|
def __init_db_user(self):
|
|||
|
|
command1 = fr'{self.root_path}\mariadb\bin\mysql -u root -p{self.passowrd} -P {self.mariadb_port} -e "create database if not exists {self.init_schema}; use {self.init_schema};"'
|
|||
|
|
with os.popen(command1) as stream:
|
|||
|
|
res = stream.read()
|
|||
|
|
logger.info(res)
|
|||
|
|
|
|||
|
|
def __init_db(self):
|
|||
|
|
new_path = get_resource_path(os.path.join('datas', 'init.sql'))
|
|||
|
|
shutil.copy(str(new_path), self.mariadb_data_path)
|
|||
|
|
command2 = fr'{self.root_path}\mariadb\bin\mysql --no-defaults -u root -p{self.passowrd} -P {self.mariadb_port} {self.init_schema} < {self.init_sql}'
|
|||
|
|
with os.popen(command2) as stream:
|
|||
|
|
res2 = stream.read()
|
|||
|
|
logger.info(res2)
|
|||
|
|
os.remove(self.init_sql)
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
current_dir = os.getcwd()
|
|||
|
|
InstallMariaDb(current_dir).start_install_mariadb()
|
|||
|
|
pass
|