← Back to team overview

maria-discuss team mailing list archive

Re: questions from a new user

 

Hi,

You've asked a lot of questions, so I feel it is best to reply inline.

On Tue, Feb 24, 2015 at 10:35 PM, Peter Boston <peterboston1212@xxxxxxxxxxx>
wrote:

> I am new to use mariadb on linux machine. I am using Fedora 20 and I have
> downloaded the mariadb 10.0.15 tar.gz file and its instruction. I removed
> the existing mariadb from my Fedora 20. I have installed the mariadb on my
> machine by following the official instruction. It seems successful (without
> error) but I cannot start it as expected. I also have few other basic
> questions.
>
>
>
> Some background information here: this database will be accessed by a
> local application. This local application may be running under a  general
> user account, user1. I installed it in /var/local as a root user.
>
>
>
> Questions:
>
>
>
> 1.            How to uninstall it completely? I want to try again to see
> if I did anything wrong before.
>
You can remove all of the mariadb RPM files at once with the following
command
sudo yum --remove mariadb\*
OR
sudo rpm --erase $(rpm -qa mariadb\*)

This might leave behind some files.  In particular, /var/log/mysqld.log
might be a symlink to another location, so:
rm -rf /var/log/mysqld* /var/log/mariadb*

There might be a /etc/my.cnf from mariadb.  It /should/ be compatible with
other versions of MySQL including MariaDB

>
>
> 2.            Because it will be accessed by a local application and the
> local application will be running by a general user, user1, should I
> install it with user1?
>
Normally MySQL runs as the 'mysql' user.  It starts mysqld as root because
it binds to a low port (3306), then switches to mysql.  You can have it
switch to any user you like by putting user=username in the [mysqld]
section of the my.cnf, the default is user=mysql


>
> 3.            Basically I am confused with these three users: user1, mysql
> and root.
>
>                 “user1” will be used to run the application and login the
> machine. “mysql” will be used to connect the mariadb. “root” will be used
> to install mariadb into /usr/local. Who will start the mariadb?  It will be
> “root”, I guess. But if “root” starts the service, “user1” and “mysql”
> don’t have problem to access its resources?
>
See the answer to my previous question.


>
> 4.            If I don't want to install it as root, can I still install
> it under the /usr/local directory?
>
Only root can write to /usr/local (unless you have permissions different
from default) so you must install the software as root to create files in
/usr/local.  When you install the database use:
sudo mysql_install_db --user=username
Again, the default username is mysql.  This will ensure the data directory
is owned by the mysql user, or whichever user you specified on the
commandline.  If you specify a user other than mysql, you MUST add
user=username to the [mysqld] section of my.cnf


>
> 5.            I renamed the my-large.cnf to .my.cnf and uncomment the
> InnoDB table section. Is this only change I need to make if I want to use
> InnoDB? should I disable the myisam? how?
>
You can not disable MyISAM.  Just leave it at the defaults.

>
>
> 6.            where should I put the .my.cnf file? put into the home
> directory of the user who starts the mariadb or the user who logon the
> system if they are different?
>
You can place a my.cnf directory in the data directory, start mysql with:
sudo mysqld_safe --defaults-file=/path/to/other/my.cnf &

>
>
> 7.            there is a my.cnf file from the Fedora 20 installation, when
> I start mariadb without the "--defaults-file=~/.my.cnf" option, I will get
> the following error from the log:
>
>                 [ERROR] mysqld: Can't create/write to file
> '/var/run/mysqld/mysqld.pid' (Errcode: 2 "No such file or directory")
>
>                 I have to manually create the mysqld folder inside the
> /var/run folder each time after reboot. how to avoid this?
>
Var run is cleaned at each reboot.  Either create /var/run/mysqld at
startup (rc.local?) or use pidfile=/path/to/pidfile in the [mysqld_safe]
section of my.cnf

>
>
> 8.            After started with that "old" my.cnf, I try to stop the
> mariadb but cannot because I cannot find its service name:
>
>
>
>                 [user1@dev2 mysql]$ ./bin/mysqladmin -u root -p status
>
>                 Enter password:
>
>                 Uptime: 685  Threads: 1  Questions: 3  Slow queries: 0
> Opens: 0  Flush tables: 1  Open tables: 62  Queries per second avg: 0.004
>
>                 [user1@dev2 mysql]$ sudo systemctl status mariadb.service
>
>                 mariadb.service
>
>                    Loaded: not-found (Reason: No such file or directory)
>
>                    Active: inactive (dead)
>
>
>
>                 [user1@dev2 mysql]$ sudo systemctl status mysql.service
>
>                 mysql.service
>
>                    Loaded: not-found (Reason: No such file or directory)
>
>                    Active: inactive (dead)
>
>
>
>                 [user1@dev2 mysql]$ sudo systemctl status mysqld.service
>
>                 mysqld.service
>
>                    Loaded: not-found (Reason: No such file or directory)
>
>                    Active: inactive (dead)
>
>
>
>                 how stop it?
>
The tarball can't create services.  You can either copy the service file
from the /usr/local/mysql/share directory to /etc/rc.d (I am not sure how
this works on systemd, actually, but I think it will) and use the service
command.  You can always just start mysql with mysqld_safe, and shut it
down by either sending the KILL signal to mysql (killall mysqld, for
example) or you can shut it down with the command:
mysqladmin -uroot -ppassword shutdown


>
> 9.            if I start mariadb with the renamed my-large.cnf ([root@dev2
> mysql]# ./bin/mysqld_safe --defaults-file=~/.my.cnf --user=mysql), I got
> the following error:
>
>
>
>                 150225  0:09:28 [ERROR] Can't open the mysql.plugin table.
> Please run mysql_upgrade to create it.
>
>                 150225  0:09:28 [Note] Recovering after a crash using
> mysql-bin
>
>                 150225  0:09:28 [Note] Starting crash recovery...
>
>                 150225  0:09:28 [Note] Crash recovery finished.
>
>                 150225  0:09:28 [Warning] Failed to load slave replication
> state from table mysql.gtid_slave_pos: 1146: Table 'mysql.gtid_slave_pos'
> doesn't exist
>
>                 150225  0:09:28 [ERROR] Can't open and lock privilege
> tables: Table 'mysql.servers' doesn't exist
>
>                 150225  0:09:28 [Note] Server socket created on IP: '::'.
>
>                 150225  0:09:28 [ERROR] Fatal error: Can't open and lock
> privilege tables: Table 'mysql.user' doesn't exist
>
>                 150225 00:09:28 mysqld_safe mysqld from pid file
> /usr/local/mysql/data/dev2.pid ended
>
I don't think you ran mysql_install_db ?


>
>
>
>
>                 Then I try do upgrade as suggested above:
>
>
>
>                 [root@dev2 mysql]# ./bin/mysql_upgrade
>
>                 Version check failed. Got the following error when calling
> the 'mysql' command line client
>
>                 ERROR 2002 (HY000): Can't connect to local MySQL server
> through socket '/tmp/mysql.sock' (2 "No such file or directory")
>
>                 FATAL ERROR: Upgrade failed
>
>
>
>                 so I think I need to make the mariadb running first, I use
> above 7 to make server running and then do upgrade, I got the following
> errors:
>
>
>
>                 [user1@dev2 mariadb-10.0.15-linux-x86_64]$ sudo
> ./bin/mysql_upgrade
>
>                 [sudo] password for user1:
>
>                 Phase 1/5: Checking mysql database
>
>                 Processing databases
>
>                 mysql
>
>                 mysql.column_stats                                 OK
>
>                 mysql.columns_priv                                 OK
>
>                 mysql.db                                           OK
>
>                 mysql.event                                        OK
>
>                 mysql.func                                         OK
>
>                 mysql.gtid_slave_pos
>
>                 Error    : Table 'mysql.gtid_slave_pos' doesn't exist in
> engine
>
>                 status   : Operation failed
>
>                 mysql.help_category                                OK
>
>                 mysql.help_keyword                                 OK
>
>                 mysql.help_relation                                OK
>
>                 mysql.help_topic                                   OK
>
>                 mysql.host                                         OK
>
>                 mysql.index_stats                                  OK
>
>                 mysql.innodb_index_stats
>
>                 Error    : Table 'mysql.innodb_index_stats' doesn't exist
> in engine
>
>                 status   : Operation failed
>
>                 mysql.innodb_table_stats
>
>                 Error    : Table 'mysql.innodb_table_stats' doesn't exist
> in engine
>
>                 status   : Operation failed
>
>                 mysql.plugin                                       OK
>
>                 mysql.proc                                         OK
>
>                 mysql.procs_priv                                   OK
>
>                 mysql.proxies_priv                                 OK
>
>                 mysql.roles_mapping                                OK
>
>                 mysql.servers                                      OK
>
>                 mysql.table_stats                                  OK
>
>                 mysql.tables_priv                                  OK
>
>                 mysql.time_zone                                    OK
>
>                 mysql.time_zone_leap_second                        OK
>
>                 mysql.time_zone_name                               OK
>
>                 mysql.time_zone_transition                         OK
>
>                 mysql.time_zone_transition_type
> OK
>
>                 mysql.user
>                                       OK
>
>
>
>
>
>                 Repairing
> tables
>
>
>
> mysql.gtid_slave_pos
>
>
>                 Error    : Table 'mysql.gtid_slave_pos' doesn't exist in
> engine
>
>                 status   : Operation failed
>
>
>
> mysql.innodb_index_stats
>
>
>                 Error    : Table 'mysql.innodb_index_stats' doesn't exist
> in engine
>
>                 status   : Operation failed
>
>                 mysql.innodb_table_stats
>
>                 Error    : Table 'mysql.innodb_table_stats' doesn't exist
> in engine
>
>                 status   : Operation failed
>
>                 Phase 2/5: Running 'mysql_fix_privilege_tables'...
>
>                 ERROR 1932 (42S02) at line 580: Table
> 'mysql.innodb_index_stats' doesn't exist in engine
>
>                 ERROR 1932 (42S02) at line 583: Table
> 'mysql.innodb_table_stats' doesn't exist in engine
>
>                 FATAL ERROR: Upgrade failed
>
>
>
>
>
>                 why I cannot run mariadb with the my.cnf which comes with
> this version of mariadb? The old my.cnf doesn't have innoDB section and I
> cannot enable it. Is this the reason? does the Fedora 20 support mariadb
> 10.0.15?
>
I don't think you used the mysql_install_db from mariadb 10.  Try clearing
the data directory and running mysql_install_db.


>
>
> Thanks,
>
>
>
> Peter
>
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-discuss
> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-discuss
> More help   : https://help.launchpad.net/ListHelp
>
>

Follow ups

References