Yum 安装方法很简单,执行命令如下即可:
Centos6: yum install –y mysql-server mysql-devel mysql
Centos7: yum install –y mariadb mariadb-devel mariadb-server
安装完成之后可以查询一下软件是否安装成功:
[root@localhost ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
mariadb-server-5.5.60-1.el7_5.x86_64
mariadb-5.5.60-1.el7_5.x86_64
mariadb-devel-5.5.60-1.el7_5.x86_64
Mariadb 和 mysql 数据库软件命令和配置都是类似的。
安装前先检查,如果有mariadb,先卸载。
rpm -qa | grep mariadb
rpm -e --nodeps 上述查询的软件包名称全称
rm /etc/my.cnf
#进入目录
[root@node1 ~]#cd /usr/src
#下载安装包
[root@node1 ~]#wget http://mirrors.163.com/mysql/Downloads/MySQL- 5.5/mysql-5.5.60.tar.gz
#解压安装包
[root@node1 ~]#tar xf mysql-5.5.60.tar.gz
#进入目录
[root@node1 ~]#cd mysql-5.5.60/
#先yum安装依赖
[root@node1 ~]#yum install gcc ncurses-devel libaio bison gcc-c++ git cmake ncurses-devel ncurses -y
#进入预编译
[root@node1 ~]#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/usr/local/mysql55/ -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BIG_TABLES=1 -DWITH_DEBUG=0
#生成并安装
[root@node1 ~]#make && make install
#复制得配置文件
[root@node1 ~]#cp support-files/my-large.cnf /usr/local/mysql55/my.cnf
#复制服务
[root@node1 ~]#cp support-files/mysql.server /etc/init.d/mysqld
#增加权限
[root@node1 ~]#chmod +x /etc/init.d/mysqld
#创建目录
[root@node1 ~]#mkdir -p /data/mysql
#创建mysql用户
[root@node1 ~]#useradd -s /sbin/nologin mysql
#改变目录权限给mysql.mysql
[root@node1 ~]#chown -R mysql. /data/mysql
#初始化
/usr/local/mysql55/scripts/mysql_install_db --user mysql --datadir /data/mysql --basedir /usr/local/mysql55
#启动服务进程
[root@node1 ~]#/etc/init.d/mysqld start
#加入service服务
[root@node1 ~]#chkconfig --add mysqld
[root@node1 ~]#chkconfig --level 35 mysqld on
[root@node1 ~]#service mysqld restart
#检查服务启动
[root@node1 ~]#ps -ef | grep mysql
#可以把服务加入开机启动
[root@node1 ~]#systemctl enable mysqld
#启动mysql数据库
[root@node1 ~]#/usr/lcoal/mysql55/bin/mysql
#启动MySQL数据库方法
1.alias变量
[root@node1 ~]#alias mysql=/usr/local/mysql55/bin/mysql
2.echo export
[root@node1 ~]#echo "export PATH=/usr/local/mysql55/bin:$PATH" > /etc/profile.d/mysql.sh
[root@node1 ~]#. /etc/profile.d/mysql.sh(source /etc/profile.d/mysql)
3.永久生效之当前用户
[root@node1 ~]#vim ~/.bash_profile
PATH=$PATH:$HOME/bin之后加入:/usr/local/mysql55/bin,变成(注意中间用“:”间隔)
PATH=$PATH:$HOME/bin:/usr/local/mysql55/bin
[root@node1 ~]#source ~/.bash_profile
4.永久生效之所有用户
[root@node1 ~]#vim /etc/profile
在最后添加一行:PATH=$PATH:/usr/local/mysql55/bin
[root@node1 ~]#source /etc/profile
#安装依赖
yum install gcc ncurses-devel libaio bison gcc-c++ git cmake openssl openssl-devel -y
#下载boost包 Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护
wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
#解压
[root@node1 ~]#tar xf boost_1_59_0.tar.gz
#移动至规划目录
[root@node1 ~]#mv boost_1_59_0 /usr/local/boost
#下载mysql安装包
[root@node1 ~]#wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.28.tar.gz
#进行解压
[root@node1 ~]#tar xf mysql-5.7.28.tar.gz
#进入目录
[root@node1 ~]#cd mysql-5.7.28
#进行预编译
[root@node1 ~]#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/usr/local/data/mysql/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_FAST_MUTEXES=1 -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0 -DWITH_BOOST=/usr/local/boost
#生成并安装
[root@node1 ~]#make && make install
#创建目录
[root@node1 ~]#mkdir -p /data/mysql57
#增加mysql用户
[root@node1 ~]#useradd -s /sbin/nologin mysql
#更改目录权限
[root@node1 ~]#chown -R mysql. /data/mysql57
#复制得服务
[root@node1 ~]#cp support-files/mysql.server /etc/init.d/mysqld57
#增加执行权限
[root@node1 ~]#chmod +x /etc/init.d/mysqld57
mysql5.7的配置文件需要手动
[root@node1 ~]#vim /usr/local/mysql57/my.cnf
#内容如下:
[mysqld]
basedir=/usr/local/mysql57/
datadir=/data/mysql57/
port=3307
pid-file=/data/mysql57/mysql.pid
socket=/data/mysql57/mysql.sock
#跳过权限修改即免密登录
skip-grant-tables
[mysqld_safe]
log-error=/data/mysql57/mysql.log
#初始化
/usr/local/mysql57/bin/mysqld --initialize --user=mysql --datadir=/data/mysql57/ --basedir=/usr/local/mysql57
#--initialize会创建一个临时密码
#--initialize-insecure
#或者执行:mysql_secure_installation进行初始化。
[root@node1 ~]#/etc/init.d/mysqld57 start
#加入service服务
[root@node1 ~]#chkconfig --add mysqld
[root@node1 ~]#chkconfig --level 35 mysqld on
[root@node1 ~]#service mysqld restart
#检查服务启动
[root@node1 ~]#ps -ef | grep mysql
[root@node1 ~]#netstat -ntlp | grep 3307
#可以把服务加入开机启动
[root@node1 ~]#systemctl enable mysqld
#启动mysql数据库
[root@node1 ~]#/usr/lcoal/mysql57/bin/mysql -uroot -p
#启动MySQL数据库方法
1.alias变量
[root@node1 ~]#alias mysql=/usr/local/mysql57/bin/mysql
2.echo export
[root@node1 ~]#echo "export PATH=/usr/local/mysql57/bin:$PATH" > /etc/profile.d/mysql.sh
[root@node1 ~]#. /etc/profile.d/mysql.sh(source /etc/profile.d/mysql)
3.永久生效之当前用户
[root@node1 ~]#vim ~/.bash_profile
PATH=$PATH:$HOME/bin之后加入:/usr/local/mysql57/bin,变成(注意中间用“:”间隔)
PATH=$PATH:$HOME/bin:/usr/local/mysql57/bin
[root@node1 ~]#source ~/.bash_profile
4.永久生效之所有用户
[root@node1 ~]#vim /etc/profile
在最后添加一行:PATH=$PATH:/usr/local/mysql57/bin
[root@node1 ~]#source /etc/profile
PS:初始化后的警告信息,如:
2020-12-24T14:07:33.199185Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-12-24T14:07:33.729148Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-12-24T14:07:33.863738Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-12-24T14:07:33.922544Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5e7704d4-45f1-11eb-a3aa-000c29664ca0.
2020-12-24T14:07:33.923636Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed‘ cannot be opened.
2020-12-24T14:07:34.329282Z 0 [Warning] CA certificate ca.pem is self signed.
2020-12-24T14:07:34.460461Z 1 [Note] A temporary password is generated for root@localhost: hr)aUgzQ?9W+
#取消跳过密码检查
[root@node1 ~]#/etc/init.d/mysql57 stop
[root@node1 ~]#vim /usr/local/mysql57/my.cnf
[mysqld]
#skip-grant-tables 把这行删除或注释掉
#重新启动
[root@node1 ~]#/etc/init.d/mysql57 start
#修改密码
mysql>alter user ‘root‘@‘localhost‘ identified by ‘admin‘;
#或者
mysql>alter user user() identified by "123";
#修改密码为空或密码
mysql>update mysql.user set authentication_string=password(‘‘) where user="root";
[root@node1 ~]#mysql -uroot -p #输入新密码admin进入即可
方法一:用SET PASSWORD命令
首先登录MySQL
格式:mysql> set password for 用户名@localhost = password(‘新密码‘);
范例:
mysql> set password for root@localhost = password(‘123‘);
方法二:在shell终端执行:
mysql -uroot -p -e "set password for root@localhost=password(‘123‘);"
ps:注意双引号和单引号!!!
方法三:在shell终端用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
范例:
mysqladmin -uroot -p123456 password 123
方法四:用UPDATE直接编辑user表
首先登录MySQL
mysql> use mysql;
mysql> update user set password=password(‘123‘) where user=‘root‘ and host=‘localhost‘;
mysql> flush privileges;
#yum安装的mysql
可执行使用/usr/bin/mysqld_safe --user=mysql --skip-grant- tables &
然后用mysql命令进入修改密码:
update mysql.user set password=password(‘‘) where user="root" and host="localhost";
或者:
update mysql.user set authentication_string=password("123456") where user="root" and host="localhost" ;
flush privileges;
Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/node1.pid).
是因为系统有/etc/my.cnf,所以报错,这个也许是系统自动由mariadb产生的。找到源码配置文件,指定数据文件路径比如为datadir=/data/mysql即可。或者mv /etc/my.cnf /tmp/即可。
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
或者ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)
找不到套接字,怎么找?
[root@node3 ~]# ps -ef |grep mysqld
root 5165 1 0 21:22 pts/0 00:00:00 /bin/sh
/usr/local/mysql55/bin/mysqld_safe --datadir /data/mysql --pid-file /data/mysql/node3.pid
mysql 5536 5165 0 21:22 pts/0 00:00:01
/usr/local/mysql55/bin/mysqld --basedir /usr/local/mysql55 --datadir /data/mysql --plugin- dir /usr/local/mysql55/lib/plugin --user mysql --log- error /var/log/mariadb/mariadb.log --pid-
file /data/mysql/node3.pid --socket /tmp/mysql.sock --port 3306
解决方案一:
[root@node3 ~]# mysql -S /tmp/mysql.sock
解决方案二: 虽然我们在my.cnf指定了socket,但linux还是从/tmp/下面去找,那么就链接过去吧。
[root@node3 ~]# ln -s /data/mysql57/mysql.sock /tmp/mysql.sock
解决方案三:在当前shell有效。
echo "export PATH=/usr/local/mysql55/bin:$PATH" > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh (#.后面有空格哦!或者source /etc/profile.d/mysql.sh)
[ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)]
安装完成以后,用/usr/local/mysql57/bin/mysql -uroot -p登录报错
[root@localhost ~]# /usr/local/mysql57/bin/mysql -uroot -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
[root@localhost ~]# /usr/local/mysql57/bin/mysql -uroot
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)
[root@localhost ~]# /usr/local/mysql57/bin/mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
[root@localhost ~]# /usr/local/mysql57/bin/mysql
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)
错误原因1:用户名和密码输入错误
如果确定是这个错误,重新输入下用户名和密码就行了。 如果用户名和密码忘记了,不要慌,参考下面
首先进入到 my.cnf里面添加一个跳过权限验证的命令
vim /etc/my.cnf
在[mysqld]下面
添加skip-grant-tables,这样再次登陆就不用输入密码,保存重启服务后直接回车就进入数据库了。
然后进入到mysql数据库
use mysql; --注意后面分号
show tables;
可以看到有一张user表,这个表里面就存的用户的登陆信息,我们查看一下user表里面都有啥字段
desc user;
然后使用命令直接修改密码就行了,这里我修改root用户密码为123456为例
update user set authentication_string=password(‘123456‘) where user=‘root‘;
然后退出mysql,重启mysql服务
quit;
service mysqld restart
再次使用用户名和密码登陆即可。
错误原因2:root用户权限不足导致的
这个我参考博客设置的。
根据上一个问题原因设置skip-grant-tables 后,进入数据库使用如下命令即可
grant all privileges on . to ‘root‘@‘%‘ identified by ‘123456‘;
root是登陆用户,%代表的是所有ip地址都能访问, 最后就是密码。 grant是同意的意思,privileges是特权的意思,这句话就是授予root用户能在任何ip使用123456密码访问。
原文:https://www.cnblogs.com/itservices/p/14459731.html