Ubuntu 编译安装LNMP (二) 安装mysql

僤鯓⒐⒋嵵緔 提交于 2021-01-23 06:28:26

安装

①安装依赖
    sudo apt install gcc g++ libxml2 libxml2-dev libssl-dev curl libcurl4-openssl-dev libgd-dev
    sudo apt install numactl
    sudo apt install libaio-dev
    sudo apt install cmake
注意: MySQL8.0需要用gcc的版本为 5.3以上

②下载源码
 源码包分为带boost版和不带boost版的,方便起见直接下载带boost的。
    wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.16.tar.gz
    tar xzv -f mysql-boost-8.0.16.tar.gz
    cd mysql-8.0.16

③编译安装
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=ON
    make && make install

如报错:

c++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2

内存不足所致,可通过设置2G交换分区来解决该问题。

解决:

#获取要增加的2G的SWAP文件块
dd if=/dev/zero of=/swapfile bs=1k count=2048000
#创建SWAP文件
mkswap /swapfile 
#激活SWAP文件
swapon /swapfile   
#查看SWAP信息是否正确
swapon -s  
#添加到fstab文件中让系统引导时自动启动
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

swapfile文件的路径在/var/下,编译完后, 如果不想要交换分区了, 可以删除。

删除交换分区:

swapoff /swapfile
rm -rf /swapfile

至此,问题解决。

④初始配置
    添加mysql用户组和配置文件权属。
        groupadd mysql
        useradd -g mysql mysql
        mkdir -p /usr/local/mysql/data
        chown -R mysql:mysql /usr/local/mysql
    初始化安装。(这一步会生成root密码,保存)
        /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    下面是成功返回(密码在第二行最后)
        2020-08-14T09:53:30.996651Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.16) initializing of server in progress as process 29384
        2020-08-14T09:53:34.163071Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 5IjtSISeeS*b
        2020-08-14T09:53:35.568572Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.16) initializing of server has completed
    新建一个全局用的简单的配置文件。
        vim /etc/my.cnf
        # 然后写入以下内容 #
            [mysqld]
            datadir=/usr/local/mysql/var
            socket=/tmp/mysql.sock
            port=3306
            user=mysql

 

            [mysql.server]
            basedir=/usr/local/mysql
⑤开启服务
    配置mysqld服务。
        cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
        chmod +x /etc/init.d/mysqld
        update-rc.d mysqld defaults
        service mysqld start
    添加PATH。(全局mysql)
        echo -e '# MySQL PATH\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile
        source /etc/profile
    连接登录MySQL并修改root账户密码(需要使用第④步生成的密码)。
        mysql -uroot -p
    使用第④步生成的密码登录成功,第一次需要修改root密码
        ALTER USER 'root'@'localhost' IDENTIFIED BY 'shx@123';
        FLUSH PRIVILEGES;
    可以查询用户和权限
        mysql> select host,user from user;

     
    若要想root用户可以远程登录mysql,则还需要以下命令:update user set host = '%' where user = 'root';
    然后在执行  flush privileges;
    也可以直接给用户权限
        grant all on *.* to 用户名@"%" identified by "密码";
        flush privileges;刷新权限
    新建用户并授权(不修改root权限)
        创建用户
        create user 'user'@'%' identified by 'pwd'; //'user'你的用户名  'pwd' 密码
        赋予权限
        GRANT ALL PRIVILEGES ON *.* TO 'beaut'@'%' WITH GRANT OPTION; 'beaut' 换成刚刚创建的用户名
        flush privileges;
    登录阿里云服务器,创建安全组(3306)

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!